You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++程序入口点错误及Visual Studio中止弹窗问题求助

解决运行时入口点找不到的问题&代码bug修复

嘿,这个问题我之前碰到过,咱们先搞定那个讨厌的入口点错误,再顺便修复代码里的小问题:

一、入口点错误的原因和解决方法

你看到的那个超长符号_ZNKSt7__cxx1112basic_stringlcSt11char_traitsIcESalcEE7_M_dataEv,其实对应C11及以后版本的std::string内部方法。出现这个错误的核心原因是**编译用的g版本和运行时依赖的libstdc动态库版本不兼容**——新的g默认用C11的新ABI实现std::string,但你的系统里可能装了旧版本的libstdc DLL,导致找不到这个新ABI的符号。

给你两个靠谱的解决办法:

  • 方法一:编译时强制使用旧ABI
    在编译命令里加上-D_GLIBCXX_USE_CXX11_ABI=0,让gcc生成和旧版libstdc++兼容的代码:
    g++ myProg.cpp -o myprog -D_GLIBCXX_USE_CXX11_ABI=0
    
  • 方法二:匹配运行时的DLL版本
    找到你安装的g++目录下的libstdc++-6.dll文件,把它复制到你的myprog.exe所在的文件夹里。这样程序运行时会优先加载这个和编译版本一致的DLL,避免调用系统里的旧版本。

二、你的DateTime代码里的小bug

另外注意到你构造函数里有个逻辑错误,会导致日期判断失效:
在两个构造函数的开头,你写的是:

if (month > 12 || day > 31) throw std::out_of_range("DateTime out of valid range");

但此时this->day还没有被赋值,用它来判断完全无效,甚至可能因为未初始化的随机值抛出错误。你应该用参数里的date来判断,改成:

if (month > 12 || date > 31) throw std::out_of_range("DateTime out of valid range");

第二个带时分秒的构造函数里的day > 31也要改成date > 31,这样日期合法性判断才会真正生效。

内容的提问来源于stack exchange,提问作者user8298902

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:45:15