我正在使用Visual Studio cl.exe編譯器在Windows 10上使用Qt 5.9編譯程序。該程序是跨平臺的,Mac版(用鐺建造)構建得很好。Qt命令行編譯在鏈接器階段使用垃圾NXCOMPAT數據失敗
的指令是:
產生商務部和.o文件qmake.exe Project-Test.pro -spec win32-msvc "CONFIG+=debug" "CONFIG+=qml_debug" && jom.exe
後,鏈接器開始:
link /NOLOGO /DYNAMICBASE /NXCOMPAT /INCREMENTAL:NO /SUBSYSTEM:CONSOLE "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:release\Project-Test.exe @C:\Users\User\AppData\Local\Temp\Project-Test.exe.7920.282.jom
然後立刻失敗:
link: extra operand ÔÇÿ/NXCOMPATÔÇÖ
Try 'link --help' for more information.
jom: C:\Users\User\ProjectName\Project-AppAndTest\Project-Test\Makefile.Release [release\Project-Test.exe] Error 1
我嘗試過qmake和jom的各種組合,但沒有明顯的區別。我的感覺是,有一些環境變量缺失或不正確。
NXCOMPAT似乎與軟件是否可在PC上運行有關。我確實有一些依賴於平臺的代碼段(如果PC做x,如果Mac做y),但是當它編譯並鏈接上面完全相同的命令時,我認爲這不是原因。
我已經在兩臺不同的計算機上測試了這個部署,並且發生了相同的錯誤。
一些澄清關於會的答案,
該方案建立和從GUI運行良好,但該計劃應該建立和作爲批處理文件的一部分執行,不能涉及的GUI任何方式。
我使用庫QWebEngine,目前無法與MinGW編譯,所以我堅持使用Visual Studio/Cl。
該平臺是64位的,但該程序包含32位庫,因此必須使用win32-msvc標誌進行編譯。
我已經嘗試使用vcvarsall.bat來運行軟件,但是這似乎是打破了Qt包含路徑設置,並且程序將不會編譯而不修改所有#includes以明確指出標頭所在的位置。
我希望得到一些有關可能導致此錯誤的信息以及如何解決此問題。