Witam
Od jakiegos 2 juz dni mecze sie z biblioteka DLL, mianowicie chce aby funkcja umieszczona w dllu mogla wykozystywac bezposrednio formularz glowny. Jako ze pisze w Builderze dyrektywa #include dolaczylem do kodu mojej biblioteki plik Unit1.h tam sa wszystkie wymagane prototypy i deklaracje mojego juz utworzonego formularza. Program kompiluje sie w miare bezproblemowo. Coprawda mam jeden warning, ale to szczegol. Gorzej gdy chce zbudowac moja biblioteke wtedy linker zwraca mi jakies dziwne bledy:
Build
[C++ Warning] Dialogs.hpp(437): W8058 Cannot create pre-compiled header: initialized data in header
[Linker Error] Unresolved external '__fastcall Controls::TControl::GetText()' referenced from E:\SERVER\SERVER2\KEYLOGGERDLL.OBJ
[Linker Error] Unresolved external '__fastcall Controls::TControl::SetText(const System::AnsiString)' referenced from E:\SERVER\SERVER2\KEYLOGGERDLL.OBJ
Przy czym blad ten NIE POJAWIA sie gdy w opcjach na zakladce packages ZAZNACZE pole Build with runtime packages - tylko po co mi taka wybrakowana biblioteka. Natomiast gdy Build with runtime packages jest ZAZNACZONE wowczas blad nie wyskakuje, ale biblioteka ma 11 KB :) i co gorsza nie ma tam mojej funkcji, a przynajmniej taki blad wyskakuje mi po wywolaniu funkcji api GetProcAddress.
Moja funkcja w dllu wyglada w duzym uproszczeniu tak:
__ stdcall __declspec(dllexport) moja_funkcja()
{
....
Form1->Memo1->Text=Form1->Memo1->Text+znak; // to mialem na mysli piszac o bezposrednim wykorzystaniu formularza
....
}
Pozdrawiam
PS pisze w Builderze 6