title image


Smiley Re: Re: Re: C++ DLL in C Sharp Program einbinden

Viel mehr hatte ich ursprünglich auch nicht. Ich hatte die fertige DLL, eine .lib dazu, sowie die Header Datei. Und deren nahezu kompleter Inhalt hatte ich in meinen ersten Post reinkopiert.

Mittlerweile bin ich aber mit Hilfe von dumpbin und ein bisschen Probieren wesentlich weiter gekommen. Ich habe ein winziges C# Testprojekt angelegt, aus dem heraus ich die DLL aufrufen und die Rückgabewerte entgegen nehmen konnte.

Beim Einbinden der DLL in mein eigentliches Projekt stoße ich nun aber auf das nächste Problem. Das Projekt, welches aus einer Vielzahl von (managed) DLLs zusammen gesetzt ist, ist als 64-Bit Programm kompiliert. Sobald ich nun aus diesem Projekt heraus meine C++ DLL aufrufen will, erhalte ich eine "BadImageFormatException". Wenn ich danach google erhalte ich die Info, dass ich mein aufrufendes Projekt als 32-Bit Programm kompilieren soll. Muss ich nun mein ganzes Projekt, also die Exe sowie alle DLLs als 32-Bit kompilieren? Habe ich schon probiert, allerdings mit dem unschönen Ergebnis, dass mein Programm dann nicht mehr funktioniert.

Gibt es vielleicht noch eine einfachere oder elegantere Lösung wie ich diesen Konflikt umgehen kann?

Vielen Dank im Voraus.

 

 

Jetzt bin ich noch ratloser als vorher! Ich dachte, du versucht mit C# (Managed Framework) auf Win32 (unmanaged WinAPI) zuzugreifen, nun schreibst du aber, dass das Projekt aus managed Dlls besteht? Wenn ich deine Aussage richtig interpretiere, war dein ursprüngliches Projekt als 64-Bit angelegt und du willst jetzt 32-Bit draus machen?

 

Ich sattle das Pferd jetzt mal von hinten auf:

1. Stelle dein Projekt auf "Any CPU". Das hilft öfters als man(n) denkt.

2. Poste von deinem Beispielprogramm bitte einen Aufruf an die Dll. (Deklaration/Definition, Aufruf/Übergabe, Rückgabe/Auswertung) Wenn du einen Aufruf mit Pointern machst, bitte diesen bevorzugt posten. Im Augenblick kann ich leider nur raten.

3. Hast du schon eine simple WinAPI Dll mit Test-Resourcen gemacht, dass du was zum Debuggen hast? Das Problem liegt ja scheinbar im Übergang. Da wäre eine debugbare Bibliothek schon hilfreich. Sie muss ja nicht zu 100% übereinstimmen.

 

Viele Grüße

Michaela

 


Rechtschreibfehler sind geistiges Eigentum des Authors und dürfen ohne schriftliche Genehmigung weder kopiert, noch veröffentlicht werden!

 

Möchtegern-Profi: "Bei Linux gibt es wenigstens keinen BlueScreen"

Echter Profi: "Stimmt! Dort ist er schwarz und heißt Kernel-Panic!"

 



geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: