Повышение - пересекает компиляцию - “из Linux” “к Windows”

Отражение требует, чтобы некоторые метаданные о типах были сохранены где-нибудь, который может быть запрошен. Так как C++ компилирует в собственный машинный код и претерпевает тяжелые изменения из-за оптимизации, представление высокого уровня приложения в значительной степени потеряно в процессе компиляции, следовательно, не будет возможно запросить их во время выполнения. Java и.NET используют представление очень высокого уровня в двоичном коде для виртуальных машин, делающих этот уровень из возможного отражения. В некоторых реализациях C++, однако, существует что-то названное Информацией о типе выполнения (RTTI), которую можно считать разделенным вниз версией отражения.

13
задан Petike 9 September 2009 в 11:58
поделиться

4 ответа

Boost делает предположения о вашей ОС и текущей сборке на основе вашей текущей системы. Что, если бы вы получили файлы заголовков win32, удалили все заголовки linux из пути включения, а затем попытались построить?

0
ответ дан 2 December 2019 в 00:18
поделиться

На самом деле это не ответ, но: не надо!

Кросс-компиляция на совершенно другую платформу обычно является огромной проблемой в ****.

Если вы пытаются собрать двоичные файлы Windows на одном компьютере, например, для упаковки, использовать виртуальную машину с окнами, mingw и соответствующими сценариями.

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

0
ответ дан 2 December 2019 в 00:18
поделиться

В официальной документации есть раздел о кросс-компиляции . Сравнивая это с тем, что вы делаете, есть две проблемы:

  1. Вы указываете i586-mingw32msvc-gcc и должны указывать i586-mingw32msvc-g ++. Первый - это компилятор C, который немного сложно использовать для компиляции кодовой базы C ++; -)

  2. Вам нужен target-os = windows

Обратите внимание, что там есть одна известная ошибка - при создании static , они не передаются через ranlib, и компоновщик mingw особенно расстроен этим. Если вы планируете использовать статические библиотеки, вам придется запускать ranlib вручную.

10
ответ дан 2 December 2019 в 00:18
поделиться

Здесь есть очень простая процедура для перекрестного повышения скорости сборки с Linux на Windows:

https://web.archive.org/web/20110604002004/http://www.vle-project.org/ wiki / Cross_compilation_Win32

3
ответ дан 2 December 2019 в 00:18
поделиться
Другие вопросы по тегам:

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