Я борюсь со следующей проблемой и очень ценю любую помощь: - (
Я скомпилировал библиотеку робототехники DARTsim для Ubuntu в подсистеме Windows для Linux в Windows 10.
Проблема:
Когда программа запускается для отладки из Visual Studio, происходит сбой программы при вызове «glutInit (& argc, argv)». Когда скомпилированная программа запускается непосредственно из командной строки Ubuntu, код работает нормально, а графический интерфейс отображается через xserver.
Отладчик показывает следующую информацию:
[Нижний 1 (процесс 15079) завершен с кодом 01]
Я использую следующую настройку :
- Windows 10
- Visual Studio 2017 и 2019 (без разницы)
- WSL с Ubuntu 18.04 LTS
- X-Sever: VcXsrv
Текущее состояние и то, что я пробовал:
- Код компилируется без проблем и предупреждений в Visual Studio 2017 и 2019 в проекте кросс-компиляции Linux без каких-либо предупреждений.
- GDB загружает символы, и я могу отлаживать код в Visual Studio до строки glutInit (& argc, argv).
Также не отображается предупреждение или ошибка при запуске отладчика GDB в Visual Studio, все символы, кажется, загружены правильно, например:
Загружен '/usr/lib/x86_64-linux-gnu/libglut.so.3'. Символы загружены.
Программа работает нормально при вызове из командной строки Ubuntu, а графический интерфейс работает без проблем через Xserver.
- Код прекрасно работает в отладчике gdb и в командной строке, при вызове из командной строки (включая графический интерфейс через XServer).
- Другие приложения xserver, такие как xeyes и glxgears также отлично работают из командной строки.
int main(int argc, char* argv[])
{
......................
... Some code here ...
......................
MyWindow window;
window.setWorld(myWorld);
glutInit(&argc, argv); // <========= !! Crashes in Visual Studio !! =======
window.initWindow(640, 480, "Sim");
glutMainLoop();
return 0;
}
Ожидаемые результаты:
Отображается графический интерфейс, и я могу отладить свою программу.
Фактическое поведение:
При нажатии на строку glutInit (& argc, argv) программа завершается без ошибок, Visual Studio отображает следующую информацию:
[Нижний 1 (процесс 21006) вышел с кодом 01]
Der Thread 'simulation.out' (0x520e) с кодом 0 (0x0) geendet.