Visual Studio .NET 2003-忽略libcmt vs libcmtd的特定库
-
30-09-2019 - |
题
我有一个模板与.NET 2003项目,该项目在开发其软件时会复制和自定义。
似乎对模板进行了一段时间的更改,以将ignorespecificlibrary属性设置为具有发行版和调试构建的libcmt.lib(即发行版和调试,构建应忽略链接器中的libcmt.lib)。
此后构建了一些基于此基础的项目,在libcmtd.lib(通过查看项目.map文件可以明显看出),这似乎引起了某些运行时问题(即一个对话框窗口闪烁,好像是断点,已经设置了)。
设置InveRespificlibrary是否排除Libcmt.lib会自动与libcmtd.lib建立项目链接?
很奇怪的是,构建模板(带有不正确的设置)链接针对libcmt.lib,而某些定制项目(尽管不是全部)链接(尽管不是全部)链接,则针对libcmtd.lib。
有任何想法吗?
解决方案
这就是发生的事情:
编译后,链接器将您的对象文件插入并创建一个符号表,该符号表具有尚未充满满足的Symol-Requrequest。然后,链接器会浏览您尝试解决这些未实现的符号的库列表。由于您忽略了libcmt.lib,因此您的第三方库已离开或添加了一些未解决的符号,并且包含一个链接器请求,以解决LICMTD.lib(也许还有其他LIB)的链接请求,因为它与DEBUG选项相称。
如果您不忽略libcmt.lib。
您也可以尝试igmore libcmtd.lib。如果您现在获得Unresolvd外部,那么忽略libcmt.dll是不是一个好主意。
其他提示
许多项目忽略了libcmt.lib,因为它与动态版本msvcrt.lib发生冲突。忽略链接器中的libcmt使项目与msvcrt.lib进行编译
不隶属于 StackOverflow