Сейчас на форуме: jinoweb (+6 невидимых)

 eXeL@B —› Программирование —› Библиотека импорта из DEF-файла
<< . 1 . 2 .
Посл.ответ Сообщение

Ранг: 40.9 (посетитель), 8thx
Активность: 0.040.01
Статус: Участник

Создано: 14 августа 2017 12:49 · Поправил: FalseMaster
· Личное сообщение · #1

Дело в следующем. Пытаюсь перелинковать msvcrt.lib. Порядок действий был таков: выковырял из оригинальной либы объектники, и состряпал из выхлопа DumpBin DEF-файл, на основе которого собрал свою либу и скомпоновал её с выдранными объектниками. Процесс проходит без ошибок и ворнингов, при подключении созданной либы к проекту (DLL) тоже всё нормуль, но трабла в том, что в секцию импорта DLL'ки попадает имя _CxxThrowException@8, тогда как msvcrt.dll экспортирует _CxxThrowException. Вот тут описан аналогичный "эксперимент". Добавляя в DEF-файл строки:
Code:
  1. _CxxThrowException
  2. __CxxThrowException@8 = _CxxThrowException
аффтар якобы получает годную либу. Так вот, это всё х**ня. Линкер игнорит алиасы и пихает в LIB-файл оба имени, а при сборке DLL естественно выбирает то, которое сгенерил компилер, т.е. stdcall-ное. Между тем в оригинальной мелкомягкой либе присутствует только ОДНО определение – __CxxThrowException@8 (с префиксом "__imp_" и без оного) и при этом каким-то загадочным образом в импорте DLL оказывается _CxxThrowException. Собственно вопрос: как это делается?




Ранг: 331.1 (мудрец), 561thx
Активность: 0.190.06
Статус: Участник

Создано: 10 января 2018 20:21
· Личное сообщение · #2

BlackCode пишет:
МАСМ втыкает msvcrt120

Поставь 17 студию и будет втыкать msvcrt140, а если все поставишь даже по минимуму, то сможешь выбрать из списка любую.

-----
Everything is relative...



<< . 1 . 2 .
 eXeL@B —› Программирование —› Библиотека импорта из DEF-файла
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати