unresolved external symbol _main
来源:互联网 发布:淘宝红人店铺 编辑:程序博客网 时间:2024/05/05 10:13
现象:
C Run-Time Library (without iostream) Characteristics Option Defined LIBC.LIB a statically linked library for single-threaded programs (Single threaded, static link) /ML LIBCMT.LIB a statically linked library that supports multithreaded programs (Multithreaded, static link) /MT _MT MSVCRT.LIB Multithreaded, dynamic link (import library for MSVCRT.DLL) /MD _MT, _DLL当你编译一个ATL工程的Release版时,你得到了下面这个链接错误:
LIBCMT.LIB(crt0.obj) : error LNK2001: unresolved external symbol _main
而Debug版本的编连却顺利通过。
出错原因:
如果你在工程中使用了CRT函数,而这些函数又需要CRT启动代码,就会出现这种链接错误。默认情况下,Release配置的Preprocessor definitions中定义了_ATL_MIN_CRT,它将CRT启动代码从你的EXE或DLL剔出去了。
背景知识:
1:
ATL支持把一个服务器编连优化成最小尺寸或者依赖性最小。我们可以定义三个预处理器符号来影响服务器的优化。_ATL_MIN_CRT 服务器不链接标准的C/C++运行库
_ATL_DLL 服务器动态链接工具函数库atl.dll
_ATL_STATIC_REGISTRY 服务器静态链接对组件注册的支持
如果定义了预处理器符号_ATL_MIN_CRT,那么我们的服务器不链接C/C++运行库,并且ATL提供了函数malloc、realloc、new和delete的一个实现。当定义了这个符号时,我们不能调用任何其他的C/C++运行库的函数。否则,就会受到这样的待遇:
LIBCMT.LIB(crt0.obj) : error LNK2001: unresolved external symbol _main
ATL向导生成的ATL工程为所有的Release版本的编连定义了_ATL_MIN_CRT,但是没有为Debug版本定义这个符号。
Debug配置没有定义这三个符号中的任何一个。
RelMinSize配置定义了_ATL_MIN_CRT和_ATL_DLL。
RelMinDependency配置定义了_ATL_MIN_CRT和_ATL_STATIC_REGISTRY。
2:
解决方法:
下面方法中的任何一个都可以纠正这个错误:
Ø 去除_ATL_MIN_CRT这个预处理符号;
Ø 打开stdafx.cpp,注释掉#include <atlimpl.cpp>这句话,然后编译,即可;
Ø 在工程的配置对话框的Link页面上,"ignore libraries"编辑框中输入Libcmt.lib,然后编译
- unresolved external symbol _main
- unresolved external symbol _main
- unresolved external symbol _main
- unresolved external symbol _main ATL
- unresolved external symbol _main解决办法
- unresolved external symbol _main解决办法
- unresolved external symbol _main解决办法
- 链接错误 "unresolved external symbol _main"
- unresolved external symbol _main相关错误
- error LNK2001: unresolved external symbol _main
- error LNK2001: unresolved external symbol _main
- error LNK2001: unresolved external symbol _main解决办法
- (转)unresolved external symbol _main解决办法
- error LNK2001: unresolved external symbol _main解决办法
- error LNK2001: unresolved external symbol _main解决办法
- error LNK2001: unresolved external symbol _main解决办法
- error LNK2001: unresolved external symbol _main解决办法
- unresolved external symbol _main相关错误
- 百度 2
- 百度3
- 将控件打包成CAB加数字签名方法实现控件自动更新
- 关于两个日期间隔工作日的oracle sql实现
- java 求两个日期之间工作日数
- unresolved external symbol _main
- flex 图片旋转
- Bridge
- 从文件下载学习到的
- 关于如何将浮点类型的数据写入或读出文件的操作
- C++ STL :vector
- session
- QQ2440+Linux 2.6.32小结
- subclipse显示英文