描述:
Debug版本没有问题,但编译选项选的为:Win_32 release MinDependency时,会出现以下错误:
Creating library ReleaseMinDependency/signal.lib and object
ReleaseMinDependency/signal.exp
LIBCMT.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
ReleaseMinDependency/signal.dll : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
各位能告诉我从什么地方找问题吗?谢谢
解决方案1:
是_ATL_MIN_CRT宏的问题!使用ATL时,可能希望达到的两个目标是:
最大限度地减小图像的大小
最大限度地减少对运行时DLL的依赖
然而,可能需要利用CRT提供的某些函数。由于静态链接会增加图像大小,而动态链接使您依赖于运行时DLL,因此使用CRT可能使您达不到这些使用ATL的主要目标。
为了帮助解决这个两难局面,ATL提供了一个解决方案,即_ATL_MIN_CRT宏。通过将常规属性选项“在ATL中最小使用CRT”设置为“是”可激活_ATL_MIN_CRT宏,这个宏为许多本来需要CRT启动代码的公共CRT函数提供了替换实现。
由于ATLCOMAppWizard产生缺省项目时,在所有的Release版本的设置中定义宏_ATL_MIN_CRT。定义此宏可以不必将并不需要的CRun-Time库引入代码中。你的代码中用到CRun-Time库,所以建立Release版本时,要去掉_ATL_MIN_CRT宏。
去掉的方法是:在project菜单中选择Setting命令,弹出ProjectSetting对话框的SettingsFor下拉列表中,选择MultipleConfiguration,然后选中所有4个Release版本复选,OK
然后,projectsetting中c/c++选项卡,General下的preprocessordefinitions去掉_ATL_MIN_CRT,重新编译就可以了
http://msdn2.microsoft.com/en-US/library/f6xx1b1z.aspx