1

这个想法是编译一个 C++ 程序。它包含 a main.cpp、 a printer.cpp、 a printer.h、 ascanner.cppscanner.h。这些源文件有一个功能 print "hello"。现在我正在尝试通过 Python 脚本从命令行创建目标文件和可执行文件,并使用cl.exe.

我得到的错误是LNK2019我知道问题出在链接中。我已经查看了这些选项,并将其用于我的 Python !!

build = subprocess.Popen(['vcvarsall.bat', 'amd64_x86', '&&', 'cl',   'kernel32.lib',...[skipping some files]'uuid.lib','/I' + qtpath,'C:\\Users\\ROY_S\\Desktop\\CppMaker\\main.cpp','/ZI','/Gm','/EHsc','/MDd','/GS','/Fo'+path,'/Fe'+path+'main.exe','/link','/LIBPATH:'+qtlib,'/DEFAULTLIB:'+ qtlib+'QtMainIsar','/DEFAULTLIB:'+ qtlib+'QtCore','/DEFAULTLIB:'+ qtlib+'QtGuiIsar4','/DEFAULTLIB:'+ qtlib+'QtNetwork','/DEFAULTLIB:'+ qtlib+'QtOpenGLIsar4','/DEFAULTLIB:'+ ...[skipping...] qtlib+'QtWebKitIsar4','/INCREMENTAL','/NOLOGO','/TLBID:1','/DYNAMICBASE','/MANIFEST','/NXCOMPAT','/ERRORREPORT:PROMPT','/MACHINE:'+'X86','/OUT:'+path+'main.exe' ]  , stdout=subprocess.PIPE)

我删除了一些库,以便于阅读。即使在我的脚本中指定了 lib 文件,我也不明白如何链接所有内容。

我也可以继续使用其他解决方案,而不是使用cl.exe. 任何可以轻松控制命令行的东西我都可以接受。

4

3 回答 3

0

在 Windows 中,我认为使用 Visual Studio 项目/解决方案并使用MsBuild构建它是个好主意。可以手动或在 Visual Studio 中创建项目/解决方案文件。您还可以在项目/解决方案中创建属性并在 MsBuild 中传递它们(请参阅 MsBuild 文档)

于 2016-02-11T16:38:49.993 回答
0
check = subprocess.Popen(['vcvarsall.bat', 'amd64_x86', '&&',    'msbuild',Path,'/p:configuration=%s' % Configuration])

这解决了我的问题。我没有使用 cl.exe ,而是制作了一个 vcxproj 文件的模板。然后我的代码在 vcxproj 文件中添加源文件和头文件,然后我使用 msbuild 对其进行编译。我觉得它是一个更简单的解决方案,因为我不关心要添加的各个库,只需将属性表添加到我的 vcxproj 文件中。

另请参阅https://msdn.microsoft.com/en-us/library/ms164311.aspx

于 2016-03-11T08:34:45.013 回答
-1

Visual Studio 是最简单的解决方案,但如果你真的不喜欢 Visual Studio,你可以通过https://www.cygwin.com/获得 gcc

于 2016-02-11T21:25:01.297 回答