я не пытаясь скомпилировать мой исходный код в исполняемый файл. Пожалуйста, прочитайте перед маркировкой как дубликат.
С учетом сказанного, я прошу прощения, если этот вопрос был задан ранее. Бесчисленные вопросы «как мне скомпилировать java | C ++ для exe» заполнили все мои поиски.
Я ищу библиотеку, которая облегчает создание исполняемых файлов Windows (.exe). Если быть точным, я хочу иметь возможность генерировать серию инструкций по сборке во время выполнения (они будут очень простыми) и создавать исполняемый файл, который будет их выполнять. Я могу создать сборку самостоятельно; Я просто хотел бы иметь библиотеку, чтобы помочь справиться со всеми заголовками и другими частями файла .exe (я начал изучать Формат переносимых исполняемых файлов но это слишком сложно для меня. Я не ленивый, но как программист высокого уровня, я чувствую, что все это у меня в голове). Конкретная механика библиотеки не важна, если она работает для Java или C ++. Однако Java очень предпочтительна.
Буду признателен за любые знания, относящиеся к любой структуре, которая будет полезна в этом отношении.
Почему бы не кататься самостоятельно? Код выброса для наименьшего общего знаменателя (ЦП). Делая это, вы, вероятно, добавите много к вашему набору навыков. В настоящее время я пишу скрипт-движок и собираюсь представить JIT-компилятор для генерации кода для платформ Windows. Для этого я добавляю списки кода в проекты, чтобы увидеть код сборки, сгенерированный компилятором. Не идеально, я знаю, но дает твердое стартовое направление.
Хорошо, так что я закончил поиском вокруг bin
папка моей установки MASM32, где я нашел ассемблер: ml.exe
, Затем я записываю ассемблер в текстовый файл и вызываю ассемблер, используя: Runtime.exec()
:
Runtime.getRuntime().exec(
"C:/masm32/bin/ml.exe " //directory of assembler
+"/coff " //create COFF header (needed for Win32)
+"/Bl C:/masm32/bin/link.exe " //directory of linker
+"/Fe src/" + fileName + ".exe " //executable file
+"/Fo src/" + fileName + ".obj " //object file
+ fileName + ".asm"); //assembly file (source)
Пользователь n.m. дал мне идею, но так как они не опубликовали ее как ответ через месяц, я решил просто ответить на нее сам.