我正在使用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)库没有任何控制权.我不能/不想进入重新编译外部库.因此,需要在我的最后修复消息.
我已经下载了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:队列
编辑:
我通过将其构建为动态库来解决它.虽然这不是我希望的解决方案......
如何在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