编译ATL工程的连接错误:__fltused already defined 和 unresolved external symbol _main
来源:互联网 发布:手机搜不到4g网络 编辑:程序博客网 时间:2024/05/01 05:24
现象:一个ATL工程, DEBUG版本已经通过,编译 ReleaseMinSize版本时
出现以下错误:
Linking...
msvcrt.lib(dllsupp.obj) : error LNK2005: __fltused already defined in StdAfx.obj
msvcrt.lib(dllsupp.obj) : warning LNK4006: __fltused already defined in StdAfx.obj; second definition ignored
LIBCMT.LIB(crt0.obj) : error LNK2001: unresolved external symbol _main
Creating library ReleaseMinSize/VideoMod.lib and object
ReleaseMinSize/VideoMod.exp
ReleaseMinSize/VideoMod.exe : fatal error LNK1169: oneor more multiply defined symbols found
Error executing link.exe.
原因与解决方法:
出错原因:
如果你在工程中使用了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:
C Run-TimeLibrary Characteristics Option Defined
(withoutiostream)
LIBC.LIB a statically linked library /ML
for single-threaded
programs
(Single threaded, static link)
LIBCMT.LIB a statically linked library
that supports multithreaded /MT _MT
programs(Multithreaded,
static link)
MSVCRT.LIB Multithreaded, dynamic /MD _MT,_DLL
link (import library for
MSVCRT.DLL)
解决方法:
Project->Settings:Setting for “Multiple configuration”
C/C++ Tab:General category, Preprocessor definitions去除_ATL_MIN_CRT这个预处理符号;
- 编译ATL工程的连接错误:__fltused already defined 和 unresolved external symbol _main
- unresolved external symbol _main ATL
- VC,link error,ATL 链接错误"unresolved external symbol _main"
- 链接错误"unresolved external symbol _main"的解决
- 链接错误"unresolved external symbol _main"的解决(转载)
- 链接错误"unresolved external symbol _main"的解决
- 正确处理unresolved external symbol _main的Link错误
- 链接错误"unresolved external symbol _main"的解决
- 链接错误"unresolved external symbol _main"的解决
- 链接错误 "unresolved external symbol _main"
- unresolved external symbol _main相关错误
- unresolved external symbol _main相关错误
- 链接错误"unresolved external symbol _main"
- unresolved external symbol _main错误解决办法
- unresolved external symbol _main
- unresolved external symbol _main
- unresolved external symbol _main
- VC编译错误:LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main编译错误
- 双向循环链表的删除
- 学习windows powershell(完成primer课程)
- linux的wc命令
- CSS完美兼容IE6/IE7/FF的通用方法
- PIC 8位单片机汇编语言常用指令
- 编译ATL工程的连接错误:__fltused already defined 和 unresolved external symbol _main
- one or more multiply defined symbols found
- StringBuilder的用法及和String的区别
- php技术点滴记录
- 浮点类型 取指定的小数位数
- webwork文件上传总结
- VC++ 异常处理
- 破windows xp登陆密码
- 我回来啦