首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio .NET 2003 -忽略libcmt与libcmtd的特定库

Visual Studio .NET 2003 -忽略libcmt与libcmtd的特定库
EN

Stack Overflow用户
提问于 2010-12-03 18:24:06
回答 2查看 1.5K关注 0票数 2

我有一个模板VS .NET 2003项目,同事在开发他们的软件时复制和定制。

模板似乎被修改了一段时间,将IgnoreSpecificLibrary属性设置为同时具有发布和调试版本的libcmt.lib (即,对于发布和调试,构建都应该忽略链接器中的libcmt.lib )。

一些基于此的项目已经构建,发布版本引入了libcmtd.lib (通过查看项目.map文件可以明显看出),这似乎导致了一些运行时问题(即,一个对话框窗口被闪现,就好像已经设置了断点一样)。

将IgnoreSpecificLibrary设置为排除libcmt.lib是否会自动使项目链接到libcmtd.lib?

奇怪的是,构建模板(使用不正确的设置)会链接到libcmt.lib,而一些自定义项目(虽然不是全部)会链接到libcmtd.lib。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-01 09:38:14

事情是这样的:

在编译之后,链接器获取你的对象文件,并创建一个符号表,其中有一个没有被填满的symol-request。然后,链接器遍历您的库列表,尝试解析那些未完全填充的符号。由于忽略了libcmt.lib,您的第三方库留下或添加了一些未解析的符号,并且它包含一个链接器请求来解析来自licmtd.lib (可能还有其他库)的那些符号,因为它包含了调试选项。

如果你没有忽略libcmt.lib,这些符号很可能会被libcmt.lib解析,并且不需要从libcmtd.lib中提取东西(即使它会被用来解析其他仍未填充的符号)。

您也可以尝试使用更多libcmtd.lib。如果你现在得到了无法解析的外部变量,那么忽略libcmt.dll可能不是一个好主意。

票数 2
EN

Stack Overflow用户

发布于 2010-12-03 20:55:21

许多项目忽略libcmt.lib,因为它与动态版本msvcrt.lib冲突。在链接器中忽略libcmt会使项目使用msvcrt.lib编译

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4344569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档