0

我正在尝试交叉编译以下 hello-world 程序

#include <iostream>

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

我的主机平台在 Windows 7 SP1 64 位机器上使用 Microsoft Visual Studio Express 2012 for Windows Desktop。我的目标平台是具有 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/的“IE6 on XP”虚拟机中成功运行我的 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 回答