0

次の hello-world プログラムをクロスコンパイルしようとしています

#include <iostream>

int main()
{
    std::cout << "Hello world!" << std::endl;
}

私のホスト プラットフォームは、Windows 7 SP1 64 ビット マシン上の Windows デスクトップに Microsoft Visual Studio Express 2012 を使用しています。私のターゲット プラットフォームは、248 MB の RAM を搭載した 32 ビットの Windows XP Embedded デバイス (バージョン 2002 Service Pack 2) です。http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspxのコマンド ラインの指示に従って、クロス コンパイルを行います。

https://dev.windows.com/en-us/microsoft-edge/tools/vms/windows/の「XP 上の IE6」仮想マシンで hello_world.exe を正常に実行できるという事実は、次のことを確信させてくれます。クロスコンパイルはうまくいきました。ただし、hello_world.exe を Windows XP Embedded デバイスにコピーして実行しようとすると、次のアプリケーション エラーが発生します。

ここに画像の説明を入力

Dependency Walker (XP Embedded デバイスで実行) で DLL の問題が表示されない:

ここに画像の説明を入力 ここに画像の説明を入力

私はここで立ち往生しています。この奇妙なアプリケーション エラーが発生する理由と、それを修正する方法を誰かが明らかにできる場合は、喜んでお知らせします。

4

1 に答える 1

0

問題が解決しました。問題は、組み込みデバイスの CPU が特定の命令をサポートしていないことでした。hello_worldオプションなしでプログラムをコンパイルして/archいましたが、Visual Studio 2012 では SSE2 命令が有効になっています。hello_worldオプションを指定してプログラムをコンパイルすると/arch:IA32、問題が解決します。

于 2016-01-04T12:39:55.923 に答える