Есть библиотека импорта в формате lib*.a. И есть dll-ка с реализацией функий. Подскажите, как создать из этих файлов нормальную *.lib, чтобы MSVS кушала, её , ато не линкуется блин. Спасибо.
ajak Ну по своей простоте делал так - если нужна была динамическая компоновка, то dll - если статическая, то .obj Но хотелось получать иногда из своих dll -> lib, что делать не пытался до сих пор. Теперь с implib это делать легко и со свсоими и с чужими dll. Реализации некоторые функции хранил в .obj файлах Тоже удобно imho Например мне нужна в проекте на С++ функция fo(). Код (Text): format MS COFF include 'win32a.inc' public fo as '_fo' section '.text' code readable executable proc fo ; ... ret endp Потом применяю ее в "MSVS" Код (Text): #include <iostream> extern "C" bool fo(); int main(int argc, char *argv[]) { cout << "using fo.obj" << endl; fo(); return 0; }
Не помню почему*, но понадобилось сделать свою Ollydbg.lib взамен той, что шла в SDK. Сначала использовал dumpbin, получил листинг Код (Text): 1 __Addsorteddata 2 __Addtolist 3 __Analysecode 164 __Animate 4 __Assemble 180 __Attachtoactiveprocess 5 __Broadcast 6 __Browsefilename 7 __Calculatecrc 8 __Checkcondition ................ Потом использовал скрипт на perl, получил def файл необходимый для implib Код (Text): include 'implib.inc' implib ollydbg.exe, ord.1, _Addsorteddata, __imp__Addsorteddata implib ollydbg.exe, ord.2, _Addtolist, __imp__Addtolist implib ollydbg.exe, ord.3, _Analysecode, __imp__Analysecode ..... implib ollydbg.exe, ord.116, _Walkreference, __imp__Walkreference implib ollydbg.exe, ord.163, _Walkreferenceex, __imp__Walkreferenceex implib ollydbg.exe, ord.117, _Writememory, __imp__Writememory endlib далее скармливаем def файл implib'у, получаем lib. скрипт, если кому-то нужен Код (Text): #!/usr/bin/perl -w open(IN, "< dumpbin.log") or die "Can't open file: $!"; open(OUT, "+>ollydbg.def") or die "Can't open file ollydbg.def for writing: $!"; print OUT "include 'implib.inc'\n\n"; while(<IN>) { if (/^\s*([0-9]+)\s+__([a-zA-Z0-9]+)/) { print OUT "implib ollydbg.exe, ord.$1, _$2, __imp__$2\n"; } } print OUT "\nendlib\n"; close(OUT); close(IN); * все-таки припоминается что для того чтобы избавиться от jmp-переходников при вызове функций
Asterix эх ... когда-нибудь я тоже сяду и выучусь составлять регулярные выражения ))) Спасибо за скрипт.
_sheva740 Что там учить? Кроме того, есть программы упрощающие создание регулярок (я знаю только одну) Regex Buddy. Бесплатную версию можно найти.... Можете посмотреть как работает тыц
1)если эта прога для финды для coff для msvs, то как делаются lib*.a файлы 2) и ещё меня удивило что саму библиотеку из def строит fasm, а как ещё по другому можно?
У него сильный препроцессор, там же на сайте в пояснении сказано. Конечно если ты не предвзят. Ну а зачем по другому? можно конечно, но левой рукой. но результат тот же. )) ты под виндой сидишь?