Господа. подскажите в чем проблема?
От: John Scherbatov  
Дата: 13.05.03 03:28
Оценка:
Работаю с 7 VC.
У меня есть ДЛЛ, созданная в Делфи.
Хочу прилинковать её к сишному проекту.
Для этого с помощью implib создаю либу,
но во время линковки студия ругается
fatal error LNK1136: invalid or corrupt file

Что делать?
Подключение к VC++ dll, созданных в Delphi или C++Builder
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.05.03 03:46
Оценка: 14 (2)
#Имя: FAQ.tools.msvc.otherdll
JS>Работаю с 7 VC. У меня есть ДЛЛ, созданная в Делфи. Хочу прилинковать её к сишному проекту. Для этого с помощью implib создаю либу, но во время линковки студия ругается

JS>fatal error LNK1136: invalid or corrupt file


JS>Что делать?


Дык! Если либа нужна для VC, то и создавать ее надо LIB-ом от VC!

Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:

IMPDEF <имя>.DEF <имя>.DLL


А потом библиотеку с помощью LIB из Visual Studio:

LIB /DEF:<имя>.DEF
Re[2]: Господа. подскажите в чем проблема?
От: John Scherbatov  
Дата: 13.05.03 04:06
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:


Можно кинуть в меня теперь уже impdef? если не трудно
Re[3]: Господа. подскажите в чем проблема?
От: Odi$$ey Россия http://malgarr.blogspot.com/
Дата: 13.05.03 04:19
Оценка:
Здравствуйте, John Scherbatov, Вы писали:

OE>Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:


JS>Можно кинуть в меня теперь уже impdef? если не трудно


http://www.rsdn.ru/File/82/impdef.zip
Re[4]: Господа. подскажите в чем проблема?
От: John Scherbatov  
Дата: 13.05.03 04:26
Оценка:
Здравствуйте, Odi$$ey, Вы писали:

OE>Здравствуйте, John Scherbatov, Вы писали:


OE>Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:


JS>Можно кинуть в меня теперь уже impdef? если не трудно


OE>http://www.rsdn.ru/File/82/impdef.zip


Спасибо. либу сделал.
Но линковаться ф-ии не хотят..
В чем может быть дело?

Ситуация такова. С помощью ipmpdef я сгенерил такой файл:

LIBRARY METADATADLL.DLL

EXPORTS
DllCanUnloadNow @9
DllGetClassObject @10
DllRegisterServer @8
DllUnregisterServer @7
DoneDll @1
GetConstantReplicaClass @6
GetMetadata @3
GetReplicaManager @4
GetSequencer @2
InitDll @5

Затем, по нему с помощью МС утилиты LIB создал либу.
Её прицепил к проекту VC и в одном из хеадеров сделал
такую декларацию:

__declspec(dllimport) void DoneDll (void);

Далее в коде где-то пытаюсь вызвать DoneDll
Компилится все ОК, но не линкуется:

ADOProvider.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl DoneDll(void)" (__imp_?DoneDll@@YAXXZ) referenced in function "public: int __thiscall CMetadataLib::DoneDLL(void)" (?DoneDLL@CMetadataLib@@QAEHXZ)

Что не так?
Re[5]: Господа. подскажите в чем проблема?
От: John Scherbatov  
Дата: 13.05.03 05:08
Оценка:
Здравствуйте, John Scherbatov, Вы писали:

JS>Здравствуйте, Odi$$ey, Вы писали:


OE>Здравствуйте, John Scherbatov, Вы писали:


OE>Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:


JS>Можно кинуть в меня теперь уже impdef? если не трудно


OE>http://www.rsdn.ru/File/82/impdef.zip


JS>Спасибо. либу сделал.

JS>Но линковаться ф-ии не хотят..
JS>В чем может быть дело?

JS>Ситуация такова. С помощью ipmpdef я сгенерил такой файл:


JS>LIBRARY METADATADLL.DLL


JS>EXPORTS

JS> DllCanUnloadNow @9
JS> DllGetClassObject @10
JS> DllRegisterServer @8
JS> DllUnregisterServer @7
JS> DoneDll @1
JS> GetConstantReplicaClass @6
JS> GetMetadata @3
JS> GetReplicaManager @4
JS> GetSequencer @2
JS> InitDll @5

JS>Затем, по нему с помощью МС утилиты LIB создал либу.

JS>Её прицепил к проекту VC и в одном из хеадеров сделал
JS>такую декларацию:

JS>__declspec(dllimport) void DoneDll (void);


JS>Далее в коде где-то пытаюсь вызвать DoneDll

JS>Компилится все ОК, но не линкуется:

JS>ADOProvider.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl DoneDll(void)" (__imp_?DoneDll@@YAXXZ) referenced in function "public: int __thiscall CMetadataLib::DoneDLL(void)" (?DoneDLL@CMetadataLib@@QAEHXZ)


JS>Что не так?


может подскажет кто?
Re[6]: Господа. подскажите в чем проблема?
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.05.03 05:21
Оценка:
Здравствуйте, John Scherbatov, Вы писали:

JS>может подскажет кто?

А ты не забыл декларировать экспортируемые функции как stdcall;?
... << RSDN@Home 1.0 beta 6a >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.