libcmt.lib和libcmtd.lib链接库冲突错误的解决方案
转载源地址 http://blog.163.com/jtyp_2000/blog/static/99104262014593402805/
在同一个项目中,所有的源文件必须链接相同的C运行时库。如果某一文件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是说用了不同的库,就会导致这个警告的出现。
总之,一句话,lib之间有冲突。需要删除导入的一些libs。
| 版 本 | 类 型 | 使用的library | 被忽略的library |
| R Release | 单线程 | libc.lib | libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib |
| 多线程 | libcmt.lib | libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib | |
| 使用DLL的多线程 | msvcrt.lib | libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib | |
| D Debug | 单线程 | libcd.lib | libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib |
| 多线程 | libcmtd.lib | libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib | |
| 使用DLL的多线程 | msvcrtd.lib | libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib |
例如编译Release版本的单线程的工程,在linker的命令行加入如下的参数: /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib
解决办法: 在CUDA编译选项里加入/MTd 或 /MT
Project Settings:
在有"LIBCMT"冲突错误存在,在“配置属性-->链接器-->输入-->忽略特定库”中把libcmt.lib添加进去或者在“配置属性-->链接器-->命令运”的“附加选项”添加上/NODEFAULTLIB:libcmt.lib libcmtd 这个库有时候不能忽略,忽略后会有不能解析的外部符号错误 其实有个方便的方法 链接时加入参数 /FORCE:MULTIPLE
没有坚守就没有事业,没有执着就没有未来!
浙公网安备 33010602011771号