2012-01-04 4 views
7

Недавно я обнаружил a problem on the midas, и я исправил его, проблема в том, что я хочу использовать MidasLib, а не midas.dll, и с исходным кодом, который я могу только построить DLL.Как построить midas.obj из исходного кода midas

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

+0

Возможно, вам лучше исправить код в памяти, а не пытаться перекомпилировать. Если вы можете найти этот 255 в памяти, то все, что вам нужно сделать, это модификация VirtualProtect, и вы будете золотыми. –

+0

@ Давид Хеффернан Да! Это действительно была бы лучшая форма, но как найти: 1 - объявление #define; 2 - строка, подлежащая изменению? –

+0

@DavidHeffernan Итак, нет НИКАКИХ способов построить midas.obj из исходного кода ???? –

ответ

1

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

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

+0

Да! Это был ответ, который я искал. Но, к сожалению, Embarcadero не предоставляет midas.cpp, поэтому на этот раз нет midas.obj. Но я последовал за подходом Дэвида Хеффернана, и я сделал патч на оригинальном midas.obj, чтобы получить ожидаемое поведение. Большое спасибо. Только для объяснения немного больше: Файл .obj предназначен для .cpp-файла на C/C++, как файл .dcu для .pas-файла на Delphi;) –

+0

Вот мое исправление (на португальском, извините): https://sites.google.com/site/carlosfeitozafilho/artigos/comoobtermensagensdeerroereconcileerrorcommaisde255caracteres –