Как собрать midas.obj из исходного кода midas

Недавно я обнаружил проблему с мидасом и я это исправил, теперь проблема в том, что я хочу использовать MidasLib, а не midas.dll, и с исходным кодом я могу только собрать DLL.

Источником является C++, и у меня очень мало знаний об этом. Я знаю, что MidasLib.pas использует внутренне midas.obj, поэтому мне нужно создать его, чтобы статически связать midas с моим приложением. Как это сделать в С++ Builder? (ХЕ)


person Carlos B. Feitoza Filho    schedule 04.01.2012    source источник
comment
Возможно, вам лучше исправить код в памяти, чем пытаться перекомпилировать. Если вы можете найти эти 255 в памяти, то все, что вам нужно сделать, это модификация VirtualProtect, и вы будете золотыми.   -  person David Heffernan    schedule 04.01.2012
comment
@DavidHeffernan Да! Это действительно было бы лучшей формой, но как найти: 1 - объявление #define; 2 - строка, которую нужно изменить?   -  person Carlos B. Feitoza Filho    schedule 05.01.2012
comment
@DavidHeffernan Итак, НЕТ СПОСОБНОСТИ собрать midas.obj из исходного кода????   -  person Carlos B. Feitoza Filho    schedule 05.01.2012
comment
ну, ясно, что можно создать эти файлы .obj, но я не знаю, как вы это сделаете.   -  person David Heffernan    schedule 05.01.2012
comment
Что ж, у меня есть исходный код, и я знаю, как решить проблему. Кроме того, я знаю, как использовать созданный объект в моей программе Delphi, поэтому мне нужно только создать файл midas.obj.   -  person Carlos B. Feitoza Filho    schedule 05.01.2012
comment
Что ж, тогда скомпилируйте исходный код с помощью bcc32.   -  person David Heffernan    schedule 05.01.2012
comment
:) Извини я плохо знаю английский. Мой исходный код генерирует DLL (midas.dll), а компиляция генерирует несколько файлов .obj, НО ни один из них не называется midas.obj. Мое намерение состоит в том, чтобы статически связать midas.obj, но правильная версия (составленная мной)   -  person Carlos B. Feitoza Filho    schedule 07.01.2012
comment
неважно, как называются файлы .obj. Скомпилируйте файлы .obj и свяжите их. А потом решать проблемы. Вы могли бы поместить весь код в один файл .cpp и скомпилировать его. Я никогда не пытался связать cpp статически. Я предполагаю, что это сложнее. Я бы просто нашел 255 и перезаписал его.   -  person David Heffernan    schedule 07.01.2012


Ответы (1)


Когда вы компилируете код C++, компилятор создает файл .OBJ для каждого имеющегося у вас файла .CPP/.C и сохраняет их где-нибудь на вашем компьютере. В большинстве случаев происходит то, что нужно запустить компоновщик для всех этих файлов .OBJ, чтобы объединить их в один EXE или DLL, но в вашем случае вам не нужны эти результаты. Ваш C++ Builder, как и большинство IDE для программирования, автоматически выполняет как компиляцию, так и компоновку.

Если вам просто нужен .OBJ, вам нужно найти, где в папке вашего проекта C++ Builder помещает свои файлы .OBJ (обычно это называется «промежуточным выводом», поскольку это промежуточный шаг между компиляцией и компоновкой). Таким образом, у вас должен быть исходный файл с именем midas.cpp или midas.c, который создает соответствующий выходной файл с именем midas.obj.

person jowo    schedule 13.01.2012
comment
Да! Это был ответ, который я искал. Но, к сожалению, Embarcadero не предоставляет midas.cpp, поэтому на этот раз не будет midas.obj. Но я следовал подходу Дэвида Хеффернана и сделал патч для исходного midas.obj, чтобы получить ожидаемое поведение. Большое Вам спасибо. Только чтобы объяснить немного больше: файл .obj предназначен для файла .cpp на C/C++, как файл .dcu для файла .pas в Delphi;) - person Carlos B. Feitoza Filho; 15.01.2012
comment
Вот мое исправление (извините, на португальском): sites.google.com/site/carlosfeitozafilho /артигос/ - person Carlos B. Feitoza Filho; 15.01.2012