Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Unresolved external при линковке .DLL (http://forum.oszone.net/showthread.php?t=46729)

Kelasant 15-03-2005 18:43 307041

Unresolved external при линковке .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 все, что надо?

Потому как в обычной ехе-программе все было бы ок.

Kelasant 15-03-2005 20:35 307064

я обнаружил, что если стоят галочки "build with runtime pakages" и "use dinamic rtl", то компиляция и линковка на ура. если убрать галочки, то выходят эти ошибки. но зачем мне это в уже готовой длл? я ж не буду с собой таскать кучу билдеровских файлов?!

Kelasant 16-03-2005 18:14 307312

Текущие проблемы решены таким образом:

Я создал проект DLL wizard.
Потом написал код с использованием нужных мне компонент.
Далее просто добавил нужные .obj файлы в проект, которые поочередно требовались при компиляции и линковке.
И галочки "build with runtime pakages" и "use dinamic rtl" отключены, конечно же.
Проверил - работает, моя dll создала соединение с Indy-сервером, приняла и передала данные.

Потом проверю, как эта dll будет работать в программе на Visual C++.
Надеюсь, проблем уже не будет..........

Всем спасибо :)


Время: 21:32.

Время: 21:32.
© OSzone.net 2001-