使用msbuild通过命令行编译时出现LNK2019错误

时间:2016-10-05 07:00:25

标签: c++ visual-studio-2008 msbuild

我第一次尝试使用以下命令通过命令行编译其中一个VC ++项目:

msbuild MyProject.vcproj

但是我得到了很多

error LNK2019: unresolved external symbol…

所有这些符号都存在于一个已编译并存在于指定路径的库*.lib中。如果我通过VS IDE构建,我的项目成功构建,没有任何LNK2019错误。但不知何故,在命令行编译期间,它无法链接库。

如何在命令行编译期间解决此问题并使其使用链接库?

命令行选项:

/Od /I "../" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_USRDLL" /D "MYPROJECT_EXPORTS" /D "_WIN32_DCOM" /D "_CRT_SECURE_NO_WARNINGS" /D "_CRT_NON_CONFORMING_SWPRINTFS" /D "_BIND_TO_CURRENT_VCLIBS_VERSION=1" /D "_VC80_UPGRADE=0x0700" /D "_WINDLL" /D "_MBCS" /Gm /EHsc /RTC1 /MDd /Fo"..\output\debug\x64\\" /Fd"..\output\debug\x64\vc90.pdb" /W3 /nologo /c /Wp64 /Zi /TP /errorReport:prompt

其他选项:

\Y-

我还注意到它显示的构建日志中有一件事:

Build started: Project: MyProject, Configuration: Debug|Win32 (TaskId:1)
Build started: Project: MyProject, Configuration: Debug|x64 (TaskId:1)
Compiling... (TaskId:1)
cl : Command line warning D9035: option 'Wp64' has been deprecated and will be removed in a future release
Build started: Project: MyProject, Configuration: Release|Win32 (TaskId:1)
  Compiling... (TaskId:1)
cl : Command line warning D9035: option 'Wp64' has been deprecated and will be removed in a future release
Build started: Project: MyProject, Configuration: Release|x64 (TaskId:1)

我很困惑为什么它甚至尝试构建任何Win32配置,因为我想为x64构建并使用相应的Visual Studio 2008 x64 Win64 Command Prompt。虽然不确定这是否会导致我的问题。

1 个答案:

答案 0 :(得分:1)

你可能已经开始了'x64的visual studio命令提示符'(不确定确切名称),但msbuild使用的默认配置/平台是Debug / Win32。很难从提供的输出中看出接下来究竟发生了什么,但它可能导致链接器在64位库中寻找32位符号,反之亦然 - 无论如何,混合平台。

要解决此问题,请特别注明您要构建的内容,例如:

msbuild MyProject.vcproj /p:Configuration=Debug;Platform=x64