0

我试图交叉编译如下招呼世界程序交叉编译从VS2012的Hello World程序在Windows 7到Windows XP

#include <iostream> 

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

我的主机平台上使用微软的Visual Studio Express的2012年Windows桌面一台Windows 7 SP1 64位机器。我的目标平台是带有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 XP'虚拟机上成功运行我的hello_world.exe,这使我相信交叉编译没问题。然而,当我的hello_world.exe复制到我的Windows XP嵌入式设备,并尝试运行它,我得到了以下应用程序错误:

enter image description here

的Dependency Walker(在XP嵌入式设备上运行)不显示我任何DLL问题:

enter image description here enter image description here

我在这里停留。如果有人可以阐明为什么我得到这个奇怪的应用程序错误,以及如何解决它,我会很高兴听到!

回答

0

问题已解决。问题是嵌入式设备的CPU不支持某些指令。我正在编译我的hello_world程序,但没有/arch选项,但对于Visual Studio 2012,这意味着启用了SSE2指令。使用/arch:IA32选项编译我的hello_world程序可解决此问题。

相关问题