C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Использование библиотеки
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

(Ну как тут не вспомнить М.Задорнова с его знаменитым "Если не пойдет") smile.gif
Monomah
Отправлено: 17.09.2004, 11:07


Не зарегистрирован







AVC, спасибо большое!
Почему то ни один способ не подошёл, но получилось чуть чуть по другому:
def файл содержал описания такого типа:

EXPORTS
Func1 @7 ; Func1

сначала привёл его к типу:

EXPORTS
Func1=_Func1@8

но Билдер при сборке сказал, что нераспознанная внешняя функция Func1. Потом я просто создал def файл, не исправлял его — оставил всё как было, потом применил к нему утилиту implib и получившаяся библиотека прекрасно заработала smile.gif


Вернуться в Вопросы программирования в C++Builder