Ceos
19.09.2011, 12:26
nachdem ich im Cplusplus-Forum leider vergleblich auf Antwort warte, hoffe ich hier vielleicht jemanden mit Erfahrung auf dem Gebiet anzutreffen
Ich versuche gerade einen Quasi-Treiber als DLL zu schreiben, welchen ich dann später in Labview einbauen möchte, da ich mit Labview in der Beziehung auf Kriegsfuß stehe!
Der Plan ist recht simpel aber Umständlich (Labview lernen wäre noch umständlicher) ...
Eine DLL mit Interfacemethoden und einer Load-Methode, welche in Labview statisch eingebunden wird. Zur Laufzeit wird die eigentliche Treiber-DLL via Load-Methode nachgeladen und über die Interfacemethoden durch Vererbung auf den Treiber zugegriffen.
Sieht nach ersten versuchen folgendermaßen aus:
TestDLL.DLLClass libraryobject = null;
Assembly DLLLink = null;
public bool loadDLL(string path)
{
try
{
DLLLink = Assembly.LoadFrom(path);
Type t = DLLLink.GetType("TestDLL.DLLClass");
libraryobject = (TestDLL.DLLClass)Activator.CreateInstance(t); //<---- hier steigt er aus
return true;
}
catch (Exception e)
{
textBox1.AppendText(e.Message+"\r\n");
}
return false;
}
produziert aber folgenden Fehler den ich nicht zu entschlüsseln vermag (auch leider in Google nichts nützliches entdeckt)
TestDLL.dll
[A]TestDLL.DLLClass kann nicht in [B]TestDLL.DLLClass umgewandelt werden. Der Typ "A" stammt von "TestDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" im Kontext "LoadFrom" am Speicherort "TestDLL.dll".. Der Typ "B" stammt von "TestDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" im Kontext "Default" am Speicherort "TestDLL.dll"..
falls jemand eine Idee hat wie genau man den Fehler zumindest interpretieren kann oder einen nützlichen Link findet, her damit ich bin Dankbar für alles!
Die Objekte unterscheiden sich ja nur im "Kontext" wie ich den aber manipulieren kann oder wie ich es richtig mache sag einem aber leider keiner. Mein Code ist aus Beispielen im Netz abgeleitet um DLLs dynamisch nachzuladen!
Ich versuche gerade einen Quasi-Treiber als DLL zu schreiben, welchen ich dann später in Labview einbauen möchte, da ich mit Labview in der Beziehung auf Kriegsfuß stehe!
Der Plan ist recht simpel aber Umständlich (Labview lernen wäre noch umständlicher) ...
Eine DLL mit Interfacemethoden und einer Load-Methode, welche in Labview statisch eingebunden wird. Zur Laufzeit wird die eigentliche Treiber-DLL via Load-Methode nachgeladen und über die Interfacemethoden durch Vererbung auf den Treiber zugegriffen.
Sieht nach ersten versuchen folgendermaßen aus:
TestDLL.DLLClass libraryobject = null;
Assembly DLLLink = null;
public bool loadDLL(string path)
{
try
{
DLLLink = Assembly.LoadFrom(path);
Type t = DLLLink.GetType("TestDLL.DLLClass");
libraryobject = (TestDLL.DLLClass)Activator.CreateInstance(t); //<---- hier steigt er aus
return true;
}
catch (Exception e)
{
textBox1.AppendText(e.Message+"\r\n");
}
return false;
}
produziert aber folgenden Fehler den ich nicht zu entschlüsseln vermag (auch leider in Google nichts nützliches entdeckt)
TestDLL.dll
[A]TestDLL.DLLClass kann nicht in [B]TestDLL.DLLClass umgewandelt werden. Der Typ "A" stammt von "TestDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" im Kontext "LoadFrom" am Speicherort "TestDLL.dll".. Der Typ "B" stammt von "TestDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" im Kontext "Default" am Speicherort "TestDLL.dll"..
falls jemand eine Idee hat wie genau man den Fehler zumindest interpretieren kann oder einen nützlichen Link findet, her damit ich bin Dankbar für alles!
Die Objekte unterscheiden sich ja nur im "Kontext" wie ich den aber manipulieren kann oder wie ich es richtig mache sag einem aber leider keiner. Mein Code ist aus Beispielen im Netz abgeleitet um DLLs dynamisch nachzuladen!