C++常见无法解析外部命令错误总结
- 一、出现不存在从CString到const char*的转换,
- 二、LNK2019 无法解析的外部符号 main,函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中引用了该符号
- 三、无法写入编译器生成的文件: “: No space left on device
- 四、禁止显示状态 错误 C4996 'strcpy': This function or variable may be unsafe. Consider using
- 五、禁止显示状态
- 六、无法更新程序数据库g\vc142.idb
- 七、错误 LNK2019 无法解析的外部符号 "public: int __thiscall Company::SetBonus(int,double)" (?SetBonus@Company@@QAEHHN@Z),函数 "protected: void __thiscall MyFrame::SETBonus(void)" (?SETBonus@MyFrame@@IAEXXZ) 中引用了该符号
一、出现不存在从CString到const char*的转换,
可以将项目属性的字符集设置从"使用Unicode字符集“转换为”使用多字字符集“,点击”项目“----“属性”----“配置属性”----”常规“----”字符集“
二、LNK2019 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) 中引用了该符号
如果是windows程序:
1.菜单中选择 Project->Properties, 弹出Property Pages窗口
2.在左边栏中依次选择:Configuration Properties->C/C+±>Preprocessor,然后在右边栏的Preprocessor Definitions对应的项中删除_CONSOLE, 添加_WINDOWS.
3.在左边栏中依次选择:Configuration Properties->Linker->System,然后在右边栏的SubSystem对应的项改为Windows(/SUBSYSTEM:WINDOWS)
如果是控制台程序:
1.菜单中选择 Project->Properties, 弹出Property Pages窗口
2.在左边栏中依次选择:Configuration Properties->C/C+±>Preprocessor,然后在右边栏的Preprocessor Definitions对应的项中删除_WINDOWS, 添加_CONSOLE.
3.在左边栏中依次选择:Configuration Properties->Linker->System,然后在右边栏的SubSystem对应的项改为CONSOLE(/SUBSYSTEM:CONSOLE)
三、无法写入编译器生成的文件: “: No space left on device
原因:空间不足
四、禁止显示状态 错误 C4996 ‘strcpy’: This function or variable may be unsafe. Consider using
用strcpy_s来代替strcpy
五、禁止显示状态
错误 C4996 ‘localtime’: This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
在项目属性——命令行中添加 /D _CRT_SECURE_NO_WARNINGS
六、无法更新程序数据库g\vc142.idb
七、错误 LNK2019 无法解析的外部符号 “public: int __thiscall Company::SetBonus(int,double)” (?SetBonus@Company@@QAEHHN@Z),函数 “protected: void __thiscall MyFrame::SETBonus(void)” (?SETBonus@MyFrame@@IAEXXZ) 中引用了该符号
其一:某个方法只是在.h里面声明,没有在cpp里面实现。
其二:声明和实现都有了,但是没有添加到vs的虚拟工作目录下面,这时候如果在其他.cpp引用的话就报这个错,想想是不是添加漏了文件。