Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 链接器警告C++;Visual Studio_Visual C++ - Fatal编程技术网

Visual c++ 链接器警告C++;Visual Studio

Visual c++ 链接器警告C++;Visual Studio,visual-c++,Visual C++,我遇到了这个问题,虽然这是一个警告,但我怀疑这是发动机罩下出了问题的迹象。在发布模式下构建时,我收到以下警告: MSVCRT.lib(cinitexe.obj):警告LNK4098:defaultlib'msvctd.lib'与其他lib的使用冲突;使用/NODEFAULTLIB:library 我正在中构建一个动态DLL。在调试模式下执行此操作时,不会出现警告。我在谷歌上搜索了一下,发现msvcrt和msvcrt都是用于多线程的,一个用于调试,另一个不用于调试。我可以将/NODEFAULTLI

我遇到了这个问题,虽然这是一个警告,但我怀疑这是发动机罩下出了问题的迹象。在发布模式下构建时,我收到以下警告:

MSVCRT.lib(cinitexe.obj):警告LNK4098:defaultlib'msvctd.lib'与其他lib的使用冲突;使用/NODEFAULTLIB:library

我正在中构建一个动态DLL。在调试模式下执行此操作时,不会出现警告。我在谷歌上搜索了一下,发现
msvcrt
msvcrt
都是用于多线程的,一个用于调试,另一个不用于调试。我可以将
/NODEFAULTLIB
MSVCRT.lib
结合使用,但我认为避免症状并不能真正解决问题


我真的不知道这是否是个大问题。正确生成DLL和
.lib
文件

> P>这是一个很大的问题,因为它可能导致许多意外的应用程序崩溃,并且不能分发一个链接,该代码链接了代码> MVCRTTD.LIB < />,因为您不允许分发VisualStudio的调试C++运行时。 虽然
/NODEFAULTLIB
应该修复这些问题,但您应该修复问题本身

正如卡萨布兰卡所说,
msvctd.lib
是在发布模式下链接的,但它应该只在调试模式下链接。 这并不意味着您自己的应用程序具有错误的链接器设置。您在项目中使用的任何库也可能具有不正确的设置

我通常要做的是,打开应用程序链接的所有发行版
.lib
文件,使用文本编辑器可以打开如此大的二进制文件(如),然后搜索它们,例如
VC80.DebugCRT
(本例中VC80==visualstudio 2005),如果我在其中一个库中找到此字符串,应使用
/MD
重新编译该库

如果要链接动态库,可以使用名为
.dll
文件的工具,而不是手动搜索
.lib
文件。
如果Dependency Walker显示对某个调试crt DLL文件的依赖关系,例如
MSVCP80D.DLL
(注意后面的D),请使用
/MD
重新编译该库,问题与您的库有关。 它们的链接方式与您的程序不同

例如,您的程序可能是单线程的,而库可能链接为多线程的

俯视

Project Properties 
Configuration Properties
C/C++ 
Code Generation 
Runtime Library

要查看设置(例如“多线程调试DLL(/MDd)”。

请检查项目的版本配置中的运行时库设置是否正确。基本上,它应该与调试版本相同,但在描述中没有“Debug”一词。有关此问题的Visual Studio文档如下所示

检查您的设置,如下所示:

  • 在解决方案资源管理器中,右键单击项目并选择“属性”
  • 确保配置(在属性窗口顶部)处于激活状态(发布)
  • 转到配置属性->C/C++->代码生成
  • 检查要发布的运行时库是否不是CRT的调试版本

发布版本应仅包括
msvcrt.lib
,而不包括
msvcrt.lib
。你确定你没有错加什么东西吗?我看你是新来的。如果以下任何答案有助于解决您的问题,请将答案标记为“已接受”。)