C ++ Компиляция файла для DLL во время выполнения в Visual Studio 2017 - PullRequest
0 голосов
/ 10 января 2019

Я видел команду для компиляции в C ++ GNU Compiler: system("c++ file.cpp -o file.so -shared -fPIC"); Что такое компиляция файла в команду библиотеки в VS 2017? После использования system("cl.exe") или system("MSBuild.exe") Я получаю ошибку: "cl.exe" не распознается как внутренняя или внешняя команда, работоспособная программа или командный файл. "или "MSBuild.exe" не распознается как внутренняя или внешняя команда, работающая программа или командный файл. "

1 Ответ

0 голосов
/ 10 января 2019

Здесь вы ищете ссылку на командную строку. MSBuild - это то, что собирается для Visual Studio, включая компиляцию.

Для ясности MSBuild используется Visual Studio для создания файлов решений или файлов проектов, которые идут со всеми необходимыми описаниями msbuild.

MSBuild сам импортирует зависимость компилятора через целевые файлы, которые установлены в системе, первый из которых -

<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />

В моей системе $(VCTargetsPath) находится в C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets, и он также может и Import больше файлов.

Где-то внизу шаг сборки, который в конечном итоге использует cl.exe для компиляции, реализован как шаг ClCompile.

Существуют разные версии cl.exe, которые зависят от ваших определений сборки и (при моей установке) пути разрешаются в Microsoft.Cpp.Default.props.

Основным отличием версии cl.exe является целевая платформа, где каждый компилятор cl.exe находится в своей собственной папке. Моя установка имеет 4 версии cl.exe, в папках с именами x86, x64, arm, arm64.

Следует принять во внимание одно дизайнерское решение - если ваша цель - интерпретировать сценарии, рассмотрите возможность использования языка сценариев, например lua , где вы можете получить готовые библиотеки для вашего проекта c ++ из коробки.

РЕДАКТИРОВАТЬ: Как примечание для int system( const char* command ); это вызывает что-то другое в зависимости от вашей системы. Вы можете проверить системную команду в Windows, используя cmd.exe. Перейдите в папку, в которую компилируется exe-файл, и сначала попробуйте выполнить системные вызовы. Я рекомендую пройти ускоренный курс по cmd.exe, рабочим каталогам и переменной среды Path в wondows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...