0

Я пытаюсь кросс-компиляции следующий привет-всемирной программыКросс-компиляции привет мир программы из VS2012 на Windows 7 для Windows XP

#include <iostream> 

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

Моя платформа хост использует Microsoft Visual Studio Express 2012 для рабочего стола Windows на 64-разрядная машина Windows 7 SP1. Моя целевая платформа - это 32-разрядное устройство Windows XP Embedded (версия 2002 с пакетом обновления 2) с 248 МБ оперативной памяти. Я выполняю инструкции командной строки на http://blogs.msdn.com/b/vcblog/archive/2012/10/08/10357555.aspx, чтобы выполнить кросс-компиляцию.

Тот факт, что я могу успешно запустить свой hello_world.exe в виртуальной машине «IE6 на XP» с https://dev.windows.com/en-us/microsoft-edge/tools/vms/windows/, заставляет меня чувствовать уверенность в том, что кросс-компиляция прошла нормально. Тем не менее, когда я копирую hello_world.exe к моему встроенному устройству Windows XP и попытаться запустить его, я получаю следующее сообщение об ошибке приложения:

enter image description here

Dependency Walker (работает на встроенном устройстве XP) не показывает меня какие-то проблемы DLL:

enter image description here enter image description here

Я застрял здесь. Если кто-нибудь может пролить свет на то, почему я получаю эту странную ошибку приложения и как я могу это исправить, я был бы рад услышать!

ответ

0

Проблема решена. Проблема заключалась в том, что процессор встроенного устройства не поддерживал определенные инструкции. Я компилировал свою программу hello_world без опции /arch, но для Visual Studio 2012 это означает, что инструкции SSE2 включены. Проблема заключается в компиляции моей программы hello_world с опцией /arch:IA32.

Смежные вопросы