Fehler beim starten der Dll
-
extern "C" __declspec (dllexport) void Dll_Form(TComponent* Owner) { TDllForm* DllForm = new TDllForm(Owner); DllForm->Height = 150; DllForm->Width = 150; DllForm->Show(); }Dll_Form = (TDll_Form*)GetProcAddress(h,"_DllForm");hmm... sollte das nicht viel eher heißen...[cpp] Dll_Form = (TDll_Form*)GetProcAddress(h,"Dll_Form");[/cpp]
-
@ Windoof
hmmmm..... habe es jetzt mal so gemacht wie du geschriebne hast .
Das gute ist der Fehler ist weg.
Aber das schlechte ist es geht kein Fenster auf hmmm...

-
Dann ist das ein anderes Problem, liegt bestimmt an der Klasse in der DLL.
-
Der Unterstrich ist schon richtig.
@Dll_Newbie
Bist du mal mit dem Debugger durchgegangen? Wo tritt die Exception auf?
Wenn deine dll nicht geladen werden kann (h==0) solltest du nicht nur eine Messagebox anzeigen, da du hier deine Funktion auf keinen Fall aufrufen kannst.
-
Die Exception tritt auf sobald er gekennzeichnet punkt betritt:
TDll_Form* Dll_Form; HINSTANCE h = LoadLibrary("FormDll.dll"); if(h != 0) Dll_Form = (TDll_Form*)GetProcAddress(h,"_DllForm"); else ShowMessage("Kann 'FormDll.dll' nicht Laden !"); if(Dll_Form != NULL) Dll_Form(Owner); /* <-- Ab hier kommt Exception */ else FreeLibrary(h);
-
Ist die dll richtig geladen (h!=0)?
Ansonsten setze mal einen Breakpoint in die aufgerufene Funktion.
Statt Owner solltest du normalerweise Application übergeben (sollte hier aber nicht das Problem sein).
-
-
Das ist ja interessant... wofür hast du denn zu danken fu?
-
Endlich hab ich den Artikel wiedergefunden:
http://www.cppbuilderdevjournal.com/articles/issues/9809/Using_a_VCL_form_in_a_DLL.htm
-
Danke noch mal an alle für die Hilfe Habe es rausgefunden woran es lag:
Fehler
[cpp]
TDll_Form* Dll_Form;
HINSTANCE h = LoadLibrary("FormDll.dll");
if(h != 0)
Dll_Form = (TDll_Form*)GetProcAddress(h,"_DllForm");// <--Fehler lag hier in _DllForm
else
ShowMessage("Kann 'FormDll.dll' nicht Laden !");
if(Dll_Form != NULL)
Dll_Form(Owner); /* <-- Ab hier kommt Exception */
else
FreeLibrary(h);
[/cpp]Hier der Behobene
TDll_Form* Dll_Form; HINSTANCE h = LoadLibrary("FormDll.dll"); if(h != 0) Dll_Form = (TDll_Form*)GetProcAddress(h,"_Dll_Form"); //<-- So geht es :D else ShowMessage("Kann 'FormDll.dll' nicht Laden !"); if(Dll_Form != NULL) Dll_Form(Owner); /* <-- Ab hier kommt Exception */ else FreeLibrary(h);
-
Also eine Kombinierung aus deinem und meinem
auch nicht schlecht.
-
@ Windoof 2 Köpfe denken besser als einer

sehr gute Kombi