链接器问题将一个C ++项目从vs2005转移到vs2010

时间:2014-08-26 17:43:11

标签: c++ visual-studio-2010 linker linker-errors maya

我正在尝试将项目从Visual Studio 2005转换为2010.(要为Maya 2014编写插件,因为它只是x64)。

首先,我正在使用VS2010针对Maya 2013 x86进行编译。这个编译和链接在VS 2005中运行良好,但在2010年我遇到了大量错误:

error LNK2019: unresolved external symbol "void __cdecl operator delete(void *,char const *,int)" (??3@YAXPAXPBDH@Z) referenced in function __unwindfunclet$?creator@exporter@@SAPAXXZ$0

我附加了生成下面输出的命令行(为了清楚起见省略了一些部分)。您将注意到VS工具集的差异在80到100之间(2005年与2010年),并且2010年链接器中缺少块{ project libs compiled with VS2005 .sln file }。此块是Visual Studio作为解决方案构建的一部分编译的依赖项目列表。

您知道如何让这些本地构建的库在2010链接器中显示出来吗?我也应该期待他们吗?任何人都可以提出其他攻击点来解决这个问题吗?

2005 c / c ++

/Od /I "C:\Program Files (x86)\Autodesk\Maya2013\include" /I {our engine include} /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "NT_PLUGIN" /D "REQUIRE_IOSTREAM" /D "_WINDLL" /FD /EHsc /MTd /Fp{pch file output} /Fo"Debug_2013\" /Fd"Debug_2013\vc80.pdb" /W3 /nologo /c /Zi /TP /errorReport:prompt

2010 c / c ++

/I"C:\Program Files (x86)\Autodesk\Maya2013\include" /I{our engine include} /Zi /nologo /W3 /WX- /Od /Oy- /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "NT_PLUGIN" /D "REQUIRE_IOSTREAM" /D "_WINDLL" /Gm- /EHsc /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /GR /Fp*{pch file output}* /Fa"Debug\" /Fo"Debug\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt

2005链接器

/OUT:{dll output file} /NOLOGO /LIBPATH:"C:\Program Files (x86)\Autodesk\Maya2013\lib" /DLL /MANIFEST /MANIFESTFILE:{manifest output file} /NODEFAULTLIB:"libcmt.lib" /DEBUG /PDB:{pdb file} /MAP /IMPLIB:{import library} /ERRORREPORT:PROMPT Opengl32.lib pnglib_d.lib zlib_d.lib libeay32.lib ssleay32.lib Foundation.lib OpenMaya.lib OpenMayaUI.lib OpenMayaAnim.lib OpenMayaFX.lib OpenMayaRender.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib { project libs compiled with VS2005 .sln file } /subsystem:windows /dll /incremental:yes /debug /export:initializePlugin /export:uninitializePlugin

2010链接器

/OUT:{dll output file} /NOLOGO /LIBPATH:"C:\Program Files (x86)\Autodesk\Maya2013\lib" /DLL "Opengl32.lib" "pnglib_d.lib" "zlib_d.lib" "libeay32.lib" "ssleay32.lib" "Foundation.lib" "OpenMaya.lib" "OpenMayaUI.lib" "OpenMayaAnim.lib" "OpenMayaFX.lib" "OpenMayaRender.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /NODEFAULTLIB:"libcmt.lib" /MANIFEST /ManifestFile:{manifest output file} /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:{pdb output file} /MAP /PGD:{pgd output file} /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT /subsystem:windows /dll /debug /export:initializePlugin /export:uninitializePlugin

1 个答案:

答案 0 :(得分:0)

终于找到了问题!!!!

遵循"新方式" Visual Studio 2010列出了项目依赖项。 http://manski.net/2011/11/project-dependencies-in-visual-c/

这解决了"未解决的符号"问题,但创建了此错误:     错误MSB4006:目标依赖关系图中存在循环依赖关系

我通过https://connect.microsoft.com/VisualStudio/feedback/details/534361/better-error-message-for-output-circular-dependency#details

中的说明解决了这个问题

希望这能为人们带来很多麻烦。