![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Lib файл [D6, Win95/98, Win2k]
Darlok © (2002-04-10 18:41:00)Кто - нить побскажет, как можно в Delphi подключить Lib Файл.
А то у меня проблема значит такая:
Создал на CBuildere библиотеку Lib. В ней есть некая функция
int __stdcall MyFunk(int).
Включил ее в проект на Delphi.
И в юните написал:
function MyFunk(x:int):int; stdcall; external "Lib.lib";
Линковщик кричит:
[Linker Error] Unresolved external "MyFunk" referenced from XPOUNIT.OBJ
А если напишу:
function MyFunk(x:int):int; stdcall; external;
То кричит уже компилятор:
[Pascal Error] XPOUnit.pas(826): Unsatisfied forward or external declaration: "MyFunk"
Чего еще делать я уже не знаю :(
PVOzerski (2002-04-11 15:17:00) [1]К тому, что сказал Alx2 © (11.04.02 12:50), можно добавить только пару слов:
1) Если есть основания полагать, что Вам понадобится ВСЯ библиотека, может, её можно
собрать в один obj-файл?
2) А ежели эта самая библиотека еще и стандартные функции C RTL возжаждет? (не универсальная
подсказка на этот случай: опишите их как cdecl; external "crtdll.dll" ; - это часто выручает);
3) А ежели эта самая библиотека еще и в COFF-формате? (тогда её всё равно разбирать и
конвертить...)
Alx2 (2002-04-11 12:50:00) [2]Lib - для C
Darlok (2002-04-11 12:43:00) [3]>PVOzerski © (10.04.02 18:51)
А для чего тогда Lib файлы, если их все равно надо бить на Obj
Darlok (2002-04-11 12:40:00) [4]>SPeller © (10.04.02 20:23)
LoadLibrary позволяет только динамически связывать библиотеку, и работает только для Dll но не Lib.
А мне надо статически включить библиотеку в Exe на этапе проектирования. Тобиш чтобы был оди Exeшник а Lib был внутри его.
SPeller (2002-04-10 20:23:00) [5]Попробуй через LoadLibrary
PVOzerski (2002-04-10 18:51:00) [6]Такой синтаксис:
function MyFunk(x:int):int; stdcall; external "Lib.lib";
применим только к dll.
Статические объектные файлы линкуются так:
{$L lib.obj} function MyFunk(x:int):int; stdcall; external;
Но вот статическую библиотеку Вам придется разбирать на объектные файлы вручную и линковать их
по отдельности. И еще: проверьте соответствия public-имен! C++ развлекается тем, что добавляет к имени
служебную информацию, это надо учитывать при объявлении имени в Delphi.
Darlok (2002-04-10 18:45:00) [7]Может в Lib файле хитро изменяются имена, как VC при экспорте из Dll делает :0)