我有一个模板与.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进行编译

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top