Руководство для кросс-компиляции приложения C++ от Linux до Windows?

Исключение нулевого указателя - это индикатор того, что вы используете объект, не инициализируя его.

Например, ниже - класс ученика, который будет использовать его в нашем коде.

public class Student {

    private int id;

    public int getId() {
        return this.id;
    }

    public setId(int newId) {
        this.id = newId;
    }
}

Приведенный ниже код дает вам исключение с нулевым указателем.

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}

Поскольку вы используете Obj_Student, но вы забыли инициализировать его, как в правильном коде, показанном ниже:

public class School {

    Student obj_Student;

    public School() {
        try {
            obj_Student = new Student();
            obj_Student.setId(12);
            obj_Student.getId();
        }
        catch(Exception e) {
            System.out.println("Null Pointer ");
        }
    }
}
40
задан Peter Mortensen 6 February 2015 в 16:04
поделиться

3 ответа

Основы не являются слишком трудными:

sudo apt-get install mingw32    
cat > main.c <<EOF
int main()
{
  printf("Hello, World!");
}
EOF
i586-mingw32msvc-cc main.c -o hello.exe

Замена apt-get с yum, или безотносительно Вашего использования дистрибутива Linux. Это генерирует hello.exe для Windows.

, Как только Вы получаете голову, вокруг которой, Вы могли использовать автоинструменты , и устанавливают CC=i586-mingw32msvc-cc

CC=i586-mingw32msvc-cc ./configure && make

Или используют CMake и файл набора инструментальных средств для управления сборкой. Более трудный все еще добавляет собственные перекрестные библиотеки. Обычно они хранятся в /usr/cross/i586-mingw32msvc/{include,lib}, и необходимо было бы включить те пути отдельно на настраивать шаге процесса сборки.

53
ответ дан Sam DeHaan 27 November 2019 в 01:44
поделиться

Это зависит от того, что Вы имеете в виду (я не мог действительно сказать).

  1. , Если Вы подразумеваете, что хотите использовать существующее приложение Linux в Windows, тогда Вы могли попытаться компилировать его с помощью Cygwin в Windows. Это однако не дает Вам исполняемый файл Windows, лишенный всех зависимостей к Cygwin (Ваш исполняемый файл все еще зависит от cygwin.dll файл) - и все еще, возможно, требуется некоторое портирование, прежде чем это будет работать. См. http://www.cygwin.com .

  2. , Если Вы подразумеваете, что хотите быть в состоянии выполнить фактическую компиляцию Приложения Windows на Linux и произвести .exe файл, который является исполняемым файлом в Windows - таким образом использование Вашего поля Linux для разработки и/или компиляции тогда, необходимо изучить MinGW для Linux, который является инструментом для кросс-компиляции для Windows на Linux. См. http://www.mingw.org/wiki/LinuxCrossMinGW .

С наилучшими пожеланиями!

6
ответ дан Peter Mortensen 27 November 2019 в 01:44
поделиться

Я предлагаю вам попробовать GUB (Grand Unified Builder), так как он кросс-компилирует несколько пакетов с их зависимостями и собирает их в один установочный пакет для в настоящее время 11 архитектур. Вы можете загрузить готовый образ для установки на виртуальную машину из здесь и перейти к источнику здесь. В настоящее время его можно использовать для кросс-компиляции GNU LilyPond/GNU Denemo/Inkscape и OpenOffice.org.

Целевые архитектуры:

  • darwin-ppc — файл tar.bz2 для Darwin 7 (MacOS 10.3)/PowerPC
  • darwin-x86 — файл tar.bz2 для Darwin 8 (MacOS 10.4)/x86
  • mingw — исполняемый файл mingw для Windows32
  • linux-x86 — общий архив для Linux/x86
  • linux-64 — общий архив для Linux/x86_64
  • linux-ppc — общий архив для Linux/PowerPC
  • freebsd -x86 - общий архив для FreeBSD 4/x86
  • freebsd-64 - общий архив для FreeBSD 6/x86_64
  • cygwin - .tar.пакеты bz2 для Cygwin/Windows32
  • arm — архив shar для Linux/ARM (в основном непроверенный)
  • debian — архив shar для Debian (в основном непроверенный)
4
ответ дан 27 November 2019 в 01:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: