Работаю с 7 VC.
У меня есть ДЛЛ, созданная в Делфи.
Хочу прилинковать её к сишному проекту.
Для этого с помощью implib создаю либу,
но во время линковки студия ругается
fatal error LNK1136: invalid or corrupt file
Что делать?
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
Здравствуйте, Odi$$ey, Вы писали:
OE>Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:
Можно кинуть в меня теперь уже impdef? если не трудно
Здравствуйте, John Scherbatov, Вы писали:
OE>Сначала создать DEF-файл с помощью утилиты IMPDEF из комплекта Borland:
JS>Можно кинуть в меня теперь уже impdef? если не трудно
http://www.rsdn.ru/File/82/impdef.zip
Здравствуйте, 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)
Что не так?
Здравствуйте, 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>Что не так?
может подскажет кто?
Здравствуйте, John Scherbatov, Вы писали:
JS>может подскажет кто?
А ты не забыл декларировать экспортируемые функции как stdcall;?
... << RSDN@Home 1.0 beta 6a >>