相关疑难解决方法(0)

Visual C++:如何禁用特定的链接器警告?

我正在使用CGAL的库,在我的代码编译的链接阶段产生了很多这种形式的链接警告:

warning LNK4099: PDB 'vc80.pdb' was not found with 'gmp-vc80-mt-sgd.lib' or at 'vc80.pdb'; linking object as if no debug info
Run Code Online (Sandbox Code Playgroud)

如何在Visual C++/Studio 2008下关闭此特定链接器警告?

请注意,我对我正在使用的外部(CGAL)库没有任何控制权.我不能/不想进入重新编译外部库.因此,需要在我的最后修复消息.

linker warnings cgal visual-studio visual-c++

118
推荐指数
4
解决办法
10万
查看次数

找不到PDB'vc100.pdb'

我已经下载了FreeImage源代码,并为X64 MT DLL自行完成了静态构建.

一切正常,除非我在freeimage.lib文件中使用链接,我得到了很多烦人的链接器警告,我不太明白原因?

2>freeimage.lib(zutil.obj) : warning LNK4099: PDB 'vc100.pdb' was not found with 'freeimage.lib(zutil.obj)' or at '\bin\Release\vc100.pdb'; linking object as if no debug info
Run Code Online (Sandbox Code Playgroud)

......就像那样......

造成这种情况的原因是什么?如何摆脱它?我在构建FreeImage时猜测它是一些编译器选项.

这是FreeImageLib项目的命令行:

/ I ".. \" /I"..\ZLib "/I"..\DeprecationManager" /I"..\OpenEXR\Half "/I"..\OpenEXR\Iex" /I"..\OpenEXR\IlmImf "/I"..\OpenEXR\Imath" /I"..\OpenEXR\IlmThread "/ NOLOGO/W3/WX-/ OD/d "WIN32"/ d "_DEBUG"/ d "OPJ_STATIC"/ d" FREEIMAGE_LIB"/ D"_CRT_SECURE_NO_DEPRECATE"/ D"LIBRAW_NODLL"/ D"_VC80_UPGRADE = 0x0710"/ D"_MBCS"/ GF-/Gm-/EHsc/RTC1/MDd/GS/fp:precise/Zc:wchar_t/Zc:forScope/OpenMP的/Fp".\Debug/FreeImageLib.pch "/Fa".\Debug/" /Fo".\Debug/ "/Fd".\Debug/"/ GD/errorReport:队列

编辑:

我通过将其构建为动态库来解决它.虽然这不是我希望的解决方案......

c++ linker warnings visual-studio-2010 static-linking

26
推荐指数
1
解决办法
4万
查看次数

在Visual Studio 2015中禁用链接器警告(LNK4221,LNK4006)

如何在Visual Studio 2015中抑制(隐藏)LNK4221,4006警告?

D:\ solutionFolder\projectFolder\OgreHlmsPbs_d.lib(OgreHlmsPbs_d.dll)1 __NULL_IMPORT_DESCRIPTOR已在OgreOverlay_d.lib(OgreOverlay_d.dll)中定义; 第二个定义忽略了LNK4006

D:\ solutionFolder\projectFolder\OgreHlmsPbs_d.lib(OgreHlmsPbs_d.dll)1此目标文件未定义任何先前未定义的公共符号,因此任何使用此库的链接操作都不会使用它LNK4221

程序运行正常.

我使用图书管理员(与SO问题相同:使用包含另一个静态库的静态库时LNK4006,LNK4221警告).

我试过了 :-

  • 链接器>所有选项>附加选项= /ignore:4221,4006
  • 链接器>命令行>附加选项= /ignore:4221,4006
  • 图书馆员>所有选项>附加选项= /ignore:4221,4006
  • 图书馆员>命令行>附加选项= /ignore:4221,4006

我已将其设置为user-project和静态库.

我也/ignore:4221单独试过上述4种组合,它无法抑制LINK4221.
资本/IGNORE:4221也不起作用.

以上所有都没有解决.还有其他组合吗?

我不想修改我的代码,例如

__declspec( dllexport ) void getRidOfLNK4221(){}    
Run Code Online (Sandbox Code Playgroud)

我读过了 :-

我想这个版本的Visual Studio(2015)可能有不同的方法来解决这个问题.

进一步的调查

在发布问题后,我发现: -

我开始认为首先使用图书管理员可能不是一个好主意.

然而,即使我没有设置图书管理员,我仍然得到我自己空的警告MyClass.cpp.
因此,这个问题可能与图书管理员无关.

D:\ solutionFolder\projectFolder\MyClass.obj 1此目标文件未定义任何先前未定义的公共符号,因此任何使用此库的链接操作都不会使用它LNK4221

c++ linker suppress-warnings visual-studio-2015

6
推荐指数
0
解决办法
1582
查看次数