Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+的命令行编译+;在Windows中使用Python脚本 这个想法是编译一个C++程序。它包含一个main.cpp、一个printer.cpp、一个printer.h、一个scanner.cpp和scanner.h。这些源文件有一个打印“hello”的功能。现在,我试图通过Python脚本并使用cl.exe从命令行创建对象文件和可执行文件_Python_C++_Compilation_Linker_Cl.exe - Fatal编程技术网

C+的命令行编译+;在Windows中使用Python脚本 这个想法是编译一个C++程序。它包含一个main.cpp、一个printer.cpp、一个printer.h、一个scanner.cpp和scanner.h。这些源文件有一个打印“hello”的功能。现在,我试图通过Python脚本并使用cl.exe从命令行创建对象文件和可执行文件

C+的命令行编译+;在Windows中使用Python脚本 这个想法是编译一个C++程序。它包含一个main.cpp、一个printer.cpp、一个printer.h、一个scanner.cpp和scanner.h。这些源文件有一个打印“hello”的功能。现在,我试图通过Python脚本并使用cl.exe从命令行创建对象文件和可执行文件,python,c++,compilation,linker,cl.exe,Python,C++,Compilation,Linker,Cl.exe,我得到的错误是LNK2019,因此我知道问题出在链接中。我已经查看了这些选项,我正在用它来编写Python build=subprocess.Popen(['vcvvarsall.bat','amd64_x86','&&','cl','kernel32.lib',…[跳过一些文件]“uuid.lib”、“/I”+qtpath、“/C:\\Users\\ROY_S\\Desktop\\CppMaker\\main.cpp”、“/ZI”、“/Gm”、“/EHsc”、“/MDd”、“/GS”、“/Fo

我得到的错误是
LNK2019
,因此我知道问题出在链接中。我已经查看了这些选项,我正在用它来编写Python

build=subprocess.Popen(['vcvvarsall.bat','amd64_x86','&&','cl','kernel32.lib',…[跳过一些文件]“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:“+QtMainIsar”、“/DEFAULTLIB:“+QtMainIsar”、“/DEFAULTLIB:“+qtlib+”QtCore”、“/DEFAULTLIB:“+qtlib+”、/qtarlib+”、/default:“+qtarlib+”、/qtlib:“+qtlib+、/default:“+qtar+”、/qtlib++qtlib+、/qtlib+”、B:“+…[skipping…]qtlib+'QtWebKitIsar4'、“/INCREMENTAL'、“/NOLOGO'、”/TLBID:1'、“/DYNAMICBASE'、“/MANIFEST'、“/NXCOMPAT'、“/ERRORREPORT:PROMPT'、“/MACHINE:“+'X86'、”/OUT:“+path+'main.exe']、stdout=subprocess.PIPE)
为了便于阅读,我删除了一些lib。即使在脚本中指定了lib文件,我也不明白如何链接所有内容


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

在windows中,我认为使用Visual Studio项目/解决方案并使用。 项目/解决方案文件可以手动创建,也可以在Visual Studio中创建。
您还可以在project/solution中创建属性,并在MsBuild中传递它们(请参阅MsBuild文档)

Visual Studio是最简单的解决方案,尽管如果您确实不喜欢Visual Studio,您可以通过它

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

也看到

check = subprocess.Popen(['vcvarsall.bat', 'amd64_x86', '&&',    'msbuild',Path,'/p:configuration=%s' % Configuration])