mingw を使用して Linux から Windows にクロスコンパイルするときの文字エンコーディング/変換の問題をどのように処理すればよいですか?
Windows ターゲット用に Linux システムで Qt プロジェクトをクロスコンパイルしようとしています。必要なすべてのmingwパッケージをインストールしました(私が信じているもの)。環境は正しく構成されていると思います。ただし、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
wchar_t*
コード内で を置き換えることで、この 1 つのエラーを回避できましたLPSTR
が、別のエラーに遭遇しました。文字エンコーディングの問題に直面していることは明らかです。変換を適切に処理するコンパイラ オプションがいくつかあるのではないかと想像していますが (私は を見ていましたfexec-charset
)、問題についてはよくわかりません。などはMicrosoftのtypedefであることは理解してLPSTR
いますが、LinuxからWindowsターゲット用にクロスコンパイルする場合、mingwはそれらをどのように処理する必要がありますか?
ありがとう!
これは、qmake/project.cpp からの問題のあるコード行です。
DWORD name_length = 1024;
wchar_t name[1024];
if (GetComputerName(name, &name_length))
ret = QString::fromWCharArray(name);
どうやら が必要なときに にGetComputerName
展開されているマクロのようです。GetComputerNameA
GetComputerNameW