Monomah |
Отправлено: 16.09.2004, 18:09 |
|
Не зарегистрирован
|
Понимаю, что вопрос ламерский, но всё же. Если такая проблема: есть библиотека Extern.dll, вместе с ней есть Extern.lib файл и файл заголовка Extern.h. Хочется использовать функции, которые там есть. Делаю так: добавляю lib файл к проекту "Project->Add to project". Но при сборке линкер выдаёт такое:
[Linker Error] 'C:\C++BUILDER\Extern.LIB' contains invalid OMF record, type 0x21 (possibly COFF)
что это такое и как с этим бороться? Пробовал использовать утилиту implib.exe, чтобы из dll получить новый lib , но она ругается, типа "unknown file type".... что делать? Помогите плииз... |
|
AVC |
Отправлено: 17.09.2004, 08:27 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Coff to Omf
Цитата из Д.Холингвэрт и др.
QUOTE |
...
воспользоваться Coff2Omf.exe из комплекта поставки
Coff2Omf extern.lib extern.new
затем переименовать extern.new в extern.lib
....
Если эта методика не даст ожидаемого результата, выясните, как организовано экспортирование функций в dll, и присвойте функциям псевдонимы, воспринимаемые C++Builder. Для этого сначала с помощью утилиты Impdef.exe создайте файл определений (он имеет расширение .def), который позволит посмотреть имена всех экспортируемых DLL функций и их порядковые номера. Далее измените экспортируемые функции в .def файле так, чтобы функции в нем имели такой вид:
Было
EXPORTS
_Add@8 = _Add @1
Стало
EXPORTS
Add=_Add@8
Сохраните отредактированный .def файл и воспользуйтесь утилитой Implib.exe....
Implib Extern.lib Extern.def
Это файл должен "понравиться" C++Builder
|
(Ну как тут не вспомнить М.Задорнова с его знаменитым "Если не пойдет") |
|
Monomah |
Отправлено: 17.09.2004, 11:07 |
|
Не зарегистрирован
|
AVC, спасибо большое!
Почему то ни один способ не подошёл, но получилось чуть чуть по другому:
def файл содержал описания такого типа:
EXPORTS
Func1 @7 ; Func1
сначала привёл его к типу:
EXPORTS
Func1=_Func1@8
но Билдер при сборке сказал, что нераспознанная внешняя функция Func1. Потом я просто создал def файл, не исправлял его — оставил всё как было, потом применил к нему утилиту implib и получившаяся библиотека прекрасно заработала
|
|
|