mingw를 사용하여 Linux에서 Windows로 크로스 컴파일 할 때 문자 인코딩/변환 문제를 어떻게 처리해야합니까?Linux에서 Windows로 크로스 컴파일 할 때 문자 인코딩을 어떻게 처리해야합니까?
Windows 시스템 용 Linux 시스템에서 Qt 프로젝트를 크로스 컴파일하려고합니다. 나는 (필요한 것으로 생각되는) 모든 필요한 패키지를 설치했으며 내 환경이 올바르게 구성되었다고 생각한다. 나는 Qt는 라이브러리를 구성 할 때 그러나, 그것은 project.cpp
를 컴파일 할 때 실패
project.cpp: In member function 'QStringList& QMakeProject::values(const QString&, QMap<QString, QStringList>&)':
project.cpp:3062:51: error: cannot convert 'wchar_t*' to 'LPSTR {aka char*}' for argument '1' to 'WINBOOL GetComputerNameA(LPSTR, LPDWORD)'
gmake: *** [project.o] Error 1
나는 코드에서 LPSTR
와 wchar_t*
를 대체하여이 단일 오류 주위를 해킹 할 수 있었다, 그러나 나는 단지에 달렸다 또 다른 오류. 지금 나는 문자 인코딩 문제에 직면하고 있음이 분명해 보인다. 변환을 적절하게 처리 할 수있는 컴파일러 옵션이 있다고 생각합니다. (fexec-charset
을보고있었습니다). 그러나이 문제에 대해서는 정말로 확신하지 못합니다. 나는 LPSTR
등이 Microsoft typedef라는 것을 알고 있지만, Windows 타겟에서 Linux에서 크로스 컴파일 할 때 어떻게 처리해야합니까?
감사합니다. 여기
는 qmake를/project.cpp에서 코드의 잘못된 줄입니다 : 는
DWORD name_length = 1024;
wchar_t name[1024];
if (GetComputerName(name, &name_length))
ret = QString::fromWCharArray(name);
이 GetComputerName
분명히 내가 GetComputerNameW
을 필요로 할 때, GetComputerNameA
로 확대되고있는 매크로 것 같다. GetComputerNameA
이 GetComputerNameW
이되는 등
유니 코드 버전 (일명 "와이드") ANSI 버전 반면 W
가 A
접미사하는 접미사됩니다
두 가지 모두 작동했지만 구성 옵션으로 설정했습니다. 이제 나는 다른 실수들을 많이 겪었지만이 문제는 해결 될 것으로 보인다. 감사. –
@Ilian Pinzon 안녕하세요, '# UNICODE 정의'를 어디에 넣을 수 있는지 알려주시겠습니까? Windows에서 소스 Qt5.2.1을 컴파일 중입니다. 같은 오류가 발생했습니다. 'project.cpp : 멤버 함수에서 'QStringList & QMakeProject :: values (const QString & QMap &') ':' –
user628298