libc.lib в masm32

Тема в разделе "WASM.ASSEMBLER", создана пользователем acdel1, 5 ноя 2005.

  1. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153


    Я тоже не знаю что это:) Я забыл где взял эту либу, а строка изнути либы для идентификации. Могу куданить закачать.
     
  2. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    2 bober А вы с этой libc.lib собирали без использования /FORCE:UNRESOLVED для

    линкера? (дело в том что я попробовал собрать с этой опцией, используя libc.lib из MSVC++ 6.0,

    и получил в общем то похожий результат -:dntknw: )
     
  3. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153


    Я только запустил твой батник и все:) Чесно говоря я несовсем понял почему так много внимания именно libc.lib.

    Я думаю что msvcrt.lib, libc.lib, LIBCMT.lib, crtdll.lib все из одной оперы можно выбрать самую толстую из них менять имена и все прокатит.
     
  4. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    2 bober

    по поводу msvcrt.lib и crtdll.lib: мне все таки хотелось бы сохранить

    независимость приложения от наличия msvcrt.dll...

    а по поводу LIBCMT.lib: я пробовал подключать её вместо libc.lib но результат был тот же -:dntknw:



    Я попробую перебрать libc.lib из MSVC если прокатит сообщу...
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    Она присутствует практически во всех версиях Win32. Тебе проще прилинковать кучу кода, чем растратиться на пару записей в импорте?
     
  6. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    2 bober libc.lib перебрал получил, что если заменить

    __imp__Get__imp__GetEnvironmentStrings@0 на

    __imp__Get__imp__GetEnvironmentStringsA@0

    то указанная выше ошибка не появляется и сборка завершается

    успешно, но полученный таким образом exe файл содержит ошибки вызовов

    импотируемых функций причём ошибки появляются не сразу, а начиная с

    _WinMain@16 -:dntknw:

    Может быть можно как то внести в libc.lib такое изменение без полной переборки?
     
  7. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    2 IceStudent

    Наверное придётся делать так как вы говорите если с libc.lib совсем

    ничего не выйдет, хотя я надеюсь что я её всё таки сумею корректно подрубить -:)
     
  8. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    Если очень надо то можно ведь и ручками исправить.

    Кривые калы

    типа

    call _WinMain@16



    на

    lea eax, _WinMain@16

    call eax
     
  9. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    [offtop]







    no comments



    [/offtop]
     
  10. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    2 bober

    C вызовом _WinMain@16 всё OK, я имел ввиду что в теле _WinMain@16

    начинаются некорректные вызовы импортируемых функций

    т.е все вызовы описанные в *.asm транслированны не корректно



    Если очень надо то можно ведь и ручками исправить

    ручками в принципе можно, но хочется получить решение не только для конкретного

    примера, но и для других возможных применений libc.lib -:)
     
  11. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    По поводу некорректных вызовов:

    Нашел вот что:

    вместо короткого call компилится длинный ????

    т.е должна была быть вызвана процедура по n адресу

    а компилится вызов по адресу расположенному n адресе



    Может сталкивался кто с таким? как это залечить?
     
  12. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    По поводу последних вопросов: разобрался в чём дело...

    (листинги от MSVC требуют доработки напильником -:) )
     
  13. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    acdel1





    Я говорю о kernel32.LIB.

    Она точно содержит __imp__GetEnvironmentStrings@0.

    Пропиши kernel32.lib в командной строке линкера.
     
  14. acdel1

    acdel1 New Member

    Публикаций:
    0
    Регистрация:
    5 ноя 2005
    Сообщения:
    35
    2 green

    Пропиши kernel32.lib в командной строке линкера

    Я попробовал сделать так: для libc.lib из MSVC 6.0 это не помогает -:dntknw: в общемто этого следовало ожидать т.к.

    kernel32.lib содержится в includelib...

    Я решил это по другому: заменил __imp__GetEnvironmentStrings@0 на __imp__GetEnvironmentStringsA@0 в libc.lib -:)

    теперь libc.lib подрубается без ошибок, приложение запускается, правда работает не совсем корректно, в чём причина ещё не выяснил... но вероятно уже не в libc.lib,

    так что эта проблема вроде как решилась...

    Благодарю всех за оказанную помощь.
     
  15. mexanik776

    mexanik776 New Member

    Публикаций:
    0
    Регистрация:
    6 янв 2010
    Сообщения:
    16
    а есть у кого oldnames.lib ?
     
  16. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Пятый год теме. Вы про что товарищ? Я в 2009 консультировал товарища : если у вас нормальный масм, то там все нужные библиотеки уже есть. Все остальное для мазохистов.