|
1
242
vc\lib中有4个版本的crt链接库:
查看链接器选项、项目+属性、链接器和命令行。请注意,这里没有提到这些库。链接器自动找出编译器使用了什么/M开关,以及应该通过pragma comment指令链接哪个.lib。有点重要的是,如果与/m选项和链接的.lib不匹配,则会出现可怕的链接错误,并且很难诊断运行时错误。 当链接器被告知链接到msvcrt.lib时,您将看到引用的错误消息。 和 LIPCMT.LIB。如果您将用/mt编译的代码与用/md链接的代码链接起来,就会发生这种情况。CRT只能有一个版本。 /nodefaultlib告诉链接器忽略从/mt编译代码生成的pragma comment指令。这可能有效,尽管大量其他链接器错误并不少见。诸如此类 埃尔诺 它是静态CRT版本中的一个外部int,但在DLL版本中被宏化为一个函数。其他很多人都喜欢。 好吧,用正确的方法解决这个问题,找到你链接的.obj或.lib文件,它是用错误的/m选项编译的。如果您没有线索,那么您可以通过为/mt对.obj/.lib文件进行grepping来找到它。 顺便说一句:Windows可执行文件(如version.dll)有自己的CRT版本来完成它们的工作。它位于C:\windows\system32中,您不能将其可靠地用于自己的程序,它的CRT头在任何地方都不可用。您的程序使用的CRT DLL具有不同的名称(如msvcrt90.dll)。 |
|
|
2
42
这意味着其中一个依赖DLL是用另一个 run-time library . Project & Gt;Projks& Gt:C/C++&G.代码生成-gt;运行时库 浏览所有的库,看看它们是以相同的方式编译的。 有关此链接中此错误的详细信息: warning LNK4098: defaultlib "LIBCD" conflicts with use of other libs |
|
|
3
28
依我所见 this link 从 Yochai Timmer 很好,很相关,但读起来很痛苦。我写了一个总结。 Yochai,如果你读过这封信,请看信尾。 对于原始邮件,请阅读: warning LNK4098: defaultlib "LIBCD" conflicts with use of other libs 误差
意义
如何解决
在后一种情况下,正如原员额所述,可能会出现两个常见问题:
对于这些情况,确保您了解问题并在解决方案中作出决定。 注:我想把Yochai Timmer链接的摘要包括在他自己的答案中,但是由于有些人很难正确地审查编辑内容,我不得不将其写在单独的答案中。对不起的 |
|
|
4
6
每次我想用VC++创建一个应用程序时都会得到这个消息。 右键单击项目,选择属性,然后在“配置属性c/c++代码生成”下,选择“多线程调试(/MTD)”用于调试配置。 请注意,这不会更改发布配置的设置-您需要转到同一位置并选择“多线程(/mt)”进行发布。 |
|
|
5
2
右键单击项目,选择“属性”,然后在“配置属性”链接器输入忽略特定库下,写入msvcrtd.lib。 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |
|
Jip Helsen · 在c中导入链接器地址 1 年前 |
|
Petr Skocik · 与定制的pcc链接 1 年前 |
|
|
KRISHNAKANT MALI · 预处理器和链接器功能中的歧义 1 年前 |
|
|
ihdv · 在c++编译中,提供链接库路径的linux命令是什么? 1 年前 |
|
|
Hans · 避免在C++中优化未使用的变量? 2 年前 |