Form Window aus DLL öffnen
-
Hallo
ich habe eine DLL generiert welche ein Windows Form Fenster enthält.
Name der DLL: HilfeDll.dll
Ich versuche jetzt aus meinen Source Code die DLL zu laden und anschließende das Fenster zu öffnen.
Ausschnitt aus dem Source Code.
#using "HilfeDll.dll";
using namespace HilfeDll; // Namespace in der DLL
System::Void HauptFenster::HauptFenster_Load(System::Object^ sender, System::EventArgs^ e) {
HINSTANCE ViewDll=LoadLibrary(L"HilfeDll.dll");if (!ViewDll){ MessageBox::Show(L"Cannot find component: HilfeDll.dll",L"Error"); }else{
// Fenster öffnen
Form^ FromAusDLL = gcnew HilfeDll::Hilfe;
FromAusDLL->Show();
}
}Der ganze Code läst sich so Compileren , wenn aber das Fenster aufgerufen wird bekomme ich einen Exception mit folgende Meldung:
Eine Ausnahme (erste Chance) des Typs "System.IO.FileNotFoundException" ist in System.Windows.Forms.dll aufgetreten.
Eine nicht behandelte Ausnahme des Typs "System.IO.FileNotFoundException" ist in System.Windows.Forms.dll aufgetreten.
Zusätzliche Informationen: Die Datei oder Assembly "LikeSySHilfeDll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" oder eine Abhängigkeit davon wurde nicht gefunden. Das System kann die angegebene Datei nicht finden.
Ob der ganze Code für das Aufrufen des Fensters richtig ist weis ich nicht, kann mir jemand weiter helfen ?
-
AFAIK erzeugt #using "HilfeDll.dll" eine Referenz auf das Assembly.
Du brauchst es also nicht dynamisch zu laden.Falls Du das Assembly dynamisch laden möchtest kannst Du AFAIK nicht LoadLibrary(..) benutzen (das geht nur für native DLLs). Dafür solltest Du Assembly::Load(..) verwenden (http://msdn.microsoft.com/en-us/library/system.reflection.assembly.aspx).
BTW: Ganz wichtig für Dich:
http://blog.kalmbach-software.de/de/2010/03/05/ccli-und-winforms-macht-keinen-sinn/