Как создать библиотеку импорта.

Тема в разделе "WASM.BEGINNERS", создана пользователем ajak, 15 янв 2011.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Есть библиотека импорта в
    формате lib*.a. И есть dll-ка с реализацией функий. Подскажите, как создать из этих файлов нормальную *.lib, чтобы MSVS кушала, её , ато не линкуется блин. Спасибо.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    dumpbin+implib

    наверно есть и другие пути
     
  3. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    А как проше? Может из *.a в lin можно?
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Не понял что такое за *.a файлы и что такое lin
     
  5. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    lib*.a - это тоже что и *.lib - библиотека только создана для gcc
     
  6. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    с помощью implib lib'у сделать очень просто

    lib*.a врядли понадобится, достаточно dll
     
  7. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    понял
     
  8. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Asterix
    Спасибо за ссылку на implib!
    А то как-то все .obj лепил.
    Приятная находка!
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    masm: inc2l
    mslink: lib с ключом /def
     
  10. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    а причем тут obj. я тут про библиотеку импорта говорю, а не про объектные файлы
     
  11. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    masm: inc2l
    mslink: lib с ключом /def
    1)чет ничего не получилось
    2) что за mslink
     
  12. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    ajak
    Ну по своей простоте делал так
    - если нужна была динамическая компоновка, то dll
    - если статическая, то .obj
    Но хотелось получать иногда из своих dll -> lib,
    что делать не пытался до сих пор.

    Теперь с implib это делать легко и со свсоими и с чужими dll.

    Реализации некоторые функции хранил в .obj файлах
    Тоже удобно imho
    Например мне нужна в проекте на С++ функция fo().

    Код (Text):
    1. format MS COFF
    2. include 'win32a.inc'
    3.  
    4. public fo as '_fo'
    5.  
    6. section '.text' code readable executable
    7.  
    8. proc fo
    9. ; ...
    10. ret
    11. endp
    Потом применяю ее в "MSVS"
    Код (Text):
    1. #include <iostream>
    2.  
    3. extern "C" bool fo();
    4. int main(int argc, char *argv[])
    5. {  
    6.      cout << "using fo.obj" << endl;
    7.      fo();
    8.      return 0;
    9. }
     
  13. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    Не помню почему*, но понадобилось сделать свою Ollydbg.lib взамен той, что шла в SDK.
    Сначала использовал dumpbin, получил листинг
    Код (Text):
    1.              1    __Addsorteddata
    2.              2    __Addtolist
    3.              3    __Analysecode
    4.            164    __Animate
    5.              4    __Assemble
    6.            180    __Attachtoactiveprocess
    7.              5    __Broadcast
    8.              6    __Browsefilename
    9.              7    __Calculatecrc
    10.              8    __Checkcondition
    11.              ................
    Потом использовал скрипт на perl, получил def файл необходимый для implib
    Код (Text):
    1. include 'implib.inc'
    2.  
    3. implib ollydbg.exe, ord.1, _Addsorteddata, __imp__Addsorteddata
    4. implib ollydbg.exe, ord.2, _Addtolist, __imp__Addtolist
    5. implib ollydbg.exe, ord.3, _Analysecode, __imp__Analysecode
    6. .....
    7. implib ollydbg.exe, ord.116, _Walkreference, __imp__Walkreference
    8. implib ollydbg.exe, ord.163, _Walkreferenceex, __imp__Walkreferenceex
    9. implib ollydbg.exe, ord.117, _Writememory, __imp__Writememory
    10.  
    11. endlib
    далее скармливаем def файл implib'у, получаем lib.

    скрипт, если кому-то нужен
    Код (Text):
    1. #!/usr/bin/perl -w
    2.  
    3.  
    4. open(IN, "< dumpbin.log") or die "Can't open file: $!";
    5. open(OUT, "+>ollydbg.def") or die "Can't open file ollydbg.def for writing: $!";
    6.  
    7. print OUT "include 'implib.inc'\n\n";
    8.  
    9. while(<IN>)
    10. {
    11.    if (/^\s*([0-9]+)\s+__([a-zA-Z0-9]+)/)
    12.    {
    13.        print OUT "implib ollydbg.exe, ord.$1, _$2, __imp__$2\n";
    14.    }
    15. }
    16.  
    17. print OUT "\nendlib\n";
    18.  
    19. close(OUT);
    20. close(IN);
    * все-таки припоминается что для того чтобы избавиться от jmp-переходников при вызове функций
     
  14. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Asterix
    эх ... когда-нибудь я тоже сяду и выучусь составлять регулярные выражения )))
    Спасибо за скрипт.
     
  15. Z3N

    Z3N New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2009
    Сообщения:
    812
    _sheva740
    Что там учить? Кроме того, есть программы упрощающие создание регулярок (я знаю только одну) Regex Buddy. Бесплатную версию можно найти....
    Можете посмотреть как работает тыц
     
  16. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    Z3N
    Спасибо!
    Действительно - "проще некуда", как в конце ролика )))
     
  17. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463

    1)если эта прога для финды для coff для msvs, то как делаются lib*.a файлы
    2) и ещё меня удивило что саму библиотеку из def строит fasm, а как ещё по другому можно?
     
  18. _sheva740

    _sheva740 New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2005
    Сообщения:
    1.539
    Адрес:
    Poland
    У него сильный препроцессор, там же на сайте в пояснении сказано.
    Конечно если ты не предвзят.
    Ну а зачем по другому?
    можно конечно, но левой рукой. но результат тот же.
    ))

    ты под виндой сидишь?
     
  19. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    не фря