2017-11-11 5 views
0

Windows 10에서 Visual Studio cl.exe 컴파일러를 사용하여 Qt 5.9를 사용하여 프로그램을 컴파일하고 있습니다. 이 프로그램은 크로스 플랫폼이며, 맥 버전 (clang으로 빌드 됨)은 훌륭하게 빌드됩니다.가비지 NXCOMPAT 데이터가있는 링커 단계에서 Qt 명령 줄 컴파일이 실패합니다.

명령은 : MOC 및 .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를 포함 할 수 answers-

것에 대한 어쨌든.

현재 MinGW로 컴파일 할 수없는 QWebEngine 라이브러리를 사용하고 있으므로 Visual Studio/Cl을 사용하고 있습니다.

플랫폼은 64 비트이지만 프로그램에는 32 비트 라이브러리가 포함되어 있으므로 win32-msvc 플래그를 사용하여 컴파일해야합니다.

vcvarsall.bat를 사용하여 소프트웨어를 실행 해 보았지만 경로 설정을 포함하는 Qt가 손상되어 프로그램이 모든 #include를 수정하지 않고 컴파일되지 않아 헤더가있는 위치를 명시 적으로 나타내지 않습니다.

이 오류의 원인이 될 수있는 정보와 해결 방법에 대한 정보를 얻길 바랍니다.

답변

0

mingw 링커가 bash 경로에 자동으로 추가되어 문제가 발생했습니다.

저는 경로에 MinGW 링커를 추가하는 것처럼 보이는 git bash에서 소프트웨어를 빌드했습니다. 링크 명령이 호출되었을 때 MSVC 링커 대신 GNU 링커를 사용하고있었습니다.

빌드를 실행하기 전에 의도 한 경로를 내 보내어이 문제를 해결할 수있었습니다.