Kelasant
15-03-2005, 18:43
Всем привет!
Я решил написать DLL. Начало было удачным, тестовая функция с примером сложения двух чисел пошла на ура.
Потом я использовал некоторые компоненты в функции — создание, использование и удаление.
(Это был компонент Indy: TIdTCPClient)
И беда случилась при линковке:
[Linker Error] Unresolved external 'Idtcpclient::TIdTCPClient::' referenced from D:\PROJECTS\CONNECT\CLIENT.OBJ
[Linker Error] Unresolved external '__fastcall Idtcpclient::TIdTCPClient::TIdTCPClient(Classes::TComponent *)' referenced from D:\PROJECTS\CONNECT\CLIENT.OBJ
Аналогично шла ругань по поводу использования строк.
Причем пока я не написал в .h файле строки типа
int __declspec(dllexport) __cdecl CreateClient(void* Client, char* RemoteHost, int RemotePort);
то компилировался и линковался проект без проблем, поскольку в .cpp были соответствующие инклуды #include <IdTCPClient.hpp>.
Как сделать, чтобы линкер находил и резолвил для .dll все, что надо?
Потому как в обычной ехе-программе все было бы ок.
Я решил написать DLL. Начало было удачным, тестовая функция с примером сложения двух чисел пошла на ура.
Потом я использовал некоторые компоненты в функции — создание, использование и удаление.
(Это был компонент Indy: TIdTCPClient)
И беда случилась при линковке:
[Linker Error] Unresolved external 'Idtcpclient::TIdTCPClient::' referenced from D:\PROJECTS\CONNECT\CLIENT.OBJ
[Linker Error] Unresolved external '__fastcall Idtcpclient::TIdTCPClient::TIdTCPClient(Classes::TComponent *)' referenced from D:\PROJECTS\CONNECT\CLIENT.OBJ
Аналогично шла ругань по поводу использования строк.
Причем пока я не написал в .h файле строки типа
int __declspec(dllexport) __cdecl CreateClient(void* Client, char* RemoteHost, int RemotePort);
то компилировался и линковался проект без проблем, поскольку в .cpp были соответствующие инклуды #include <IdTCPClient.hpp>.
Как сделать, чтобы линкер находил и резолвил для .dll все, что надо?
Потому как в обычной ехе-программе все было бы ок.