Hallo,
meine Daten:
Windows 7
VS 2008 (Standard Edition)
C # .NET, 3.5
Ich habe versucht eine DLL einzubinden die ca. 1999 erstellt worden ist.
Das alte Projekt wurde in VB 4 erstellt. Ich weiß leider nicht, ob die Anwendung noch auf dem Server läuft/lief.
Meine Aufgabe ist die DLL einzubinden und mit Ihrer Login-Funktion mich mit einem bestimmten System zu verbinden. Dies habe ich mit .NET C# realisiert.
Die Dll ist im gleichen Verzeichnis wie die EXE abgelegt (bin\debug\).
Problem:
Was ich seltsam finde ist, dass auf meinem 32-Bit-Betriebssystem immer die Fehlermeldung
System.DllNotFoundException ausgegeben wird. Zum Test habe ich das Projekt kopiert und meinem Arbeitskollegen zugesendet. Er hat ein 64-Bit-Betriebssystem und bei ihm ist die Exception nicht ausgeworfen worden, sondern diese: System.BadImageFormatException.
Ich habe das Projekt an drei 64-Bit-Betriebssystem Rechnern getestet, wo die DLL gefunden wurde, aber dafür System.BadImageFormatException ausgegeben. Dazu an 2 Rechnern mit einem 32-Bit-Betriebssystem, wo die Meldung System.DllNotFoundException ausgegeben wurde. Daher bin ich davon ausgegangen, dass es am Betriebssystem liegt.
Kann das denn wirklich richtig sein oder ist die System.DllNotFoundException eine andere Ursache?
Ich habe viele Foren, wegen der Fehlermeldung System.DllNotFoundException, durchsucht, aber nichts davon hat weiter geholfen. Immer wurde auf den Pfad „bin\debug\“ hingewiesen.
Diese Exception habe ich natürlich auch nachgesehen und unter msdn stand, dass DLL und EXE im gleichen Format vorliegen müssen.
„anycpu.exe -- runs as a 32-bit process, can load anycpu.dll and x86.dll, will get BadImageFormatException if it tries to load x64.dll”
Dies habe ich geprüft. MyDll.DLL ist x86 und die EXE ist auch x86.
Dann gab es den Hinweis, dass die DLL auch andere DLLs aufrufen kann und dass die sich unterscheiden können, aber alle sind x86.
Was ich als einziges Problem sehen kann ist, dass die STD_MT.DLL nicht gefunden wird (mit Dependency Walker getestet). Ich versuche gerade den Ansprechpartner zu kontaktieren, da es sich meiner Meinung nach nicht um einen System DLL handeln kann.
Ich danke im Voraus.
Gruß
meine Daten:
Windows 7
VS 2008 (Standard Edition)
C # .NET, 3.5
Ich habe versucht eine DLL einzubinden die ca. 1999 erstellt worden ist.
Das alte Projekt wurde in VB 4 erstellt. Ich weiß leider nicht, ob die Anwendung noch auf dem Server läuft/lief.
Meine Aufgabe ist die DLL einzubinden und mit Ihrer Login-Funktion mich mit einem bestimmten System zu verbinden. Dies habe ich mit .NET C# realisiert.
Code:
public class C_Test
{
[DllImport("MyDll.DLL")]
public static extern int LoginAuth(String Digest);
static void test()
{
C_Test.LoginAuth("1234");
}
}
Die Dll ist im gleichen Verzeichnis wie die EXE abgelegt (bin\debug\).
Problem:
- System.DllNotFoundException
Was ich seltsam finde ist, dass auf meinem 32-Bit-Betriebssystem immer die Fehlermeldung
System.DllNotFoundException ausgegeben wird. Zum Test habe ich das Projekt kopiert und meinem Arbeitskollegen zugesendet. Er hat ein 64-Bit-Betriebssystem und bei ihm ist die Exception nicht ausgeworfen worden, sondern diese: System.BadImageFormatException.
Ich habe das Projekt an drei 64-Bit-Betriebssystem Rechnern getestet, wo die DLL gefunden wurde, aber dafür System.BadImageFormatException ausgegeben. Dazu an 2 Rechnern mit einem 32-Bit-Betriebssystem, wo die Meldung System.DllNotFoundException ausgegeben wurde. Daher bin ich davon ausgegangen, dass es am Betriebssystem liegt.
Kann das denn wirklich richtig sein oder ist die System.DllNotFoundException eine andere Ursache?
Ich habe viele Foren, wegen der Fehlermeldung System.DllNotFoundException, durchsucht, aber nichts davon hat weiter geholfen. Immer wurde auf den Pfad „bin\debug\“ hingewiesen.
- System.BadImageFormatException(es reicht mir fürs erste, wenn Ihr zu Punkt 1 helfen könnt)
Diese Exception habe ich natürlich auch nachgesehen und unter msdn stand, dass DLL und EXE im gleichen Format vorliegen müssen.
„anycpu.exe -- runs as a 32-bit process, can load anycpu.dll and x86.dll, will get BadImageFormatException if it tries to load x64.dll”
Dies habe ich geprüft. MyDll.DLL ist x86 und die EXE ist auch x86.
Dann gab es den Hinweis, dass die DLL auch andere DLLs aufrufen kann und dass die sich unterscheiden können, aber alle sind x86.
Was ich als einziges Problem sehen kann ist, dass die STD_MT.DLL nicht gefunden wird (mit Dependency Walker getestet). Ich versuche gerade den Ansprechpartner zu kontaktieren, da es sich meiner Meinung nach nicht um einen System DLL handeln kann.
Ich danke im Voraus.
Gruß