2016-04-13 7 views
2

aufrufen Ich verwende C# WPF.
Ich habe einen Test DLL C++ wie folgt:
.h:
Falsches Format Ausnahme beim Versuch, C++ DLL aus C#

extern "C" __delspec(dllexport) void TestMethod(); 

CPP-Datei:

extern "C" 
{ 
    __delspec(dllexport) void TestMethod() 
    { 
     MessageBox(0, L"Test", L"Test", MB_ICONINFORMATION); 
    } 
} 

C# Code:

[DllImport("DllTest.dll", EntryPoint = "TestMethod")] 
public static extern void TestMethod(); 

Und wenn i versuche ich zu TestMethod aufzurufen habe ich eine Ausnahme bekommen:

an attempt was made to load a program with an incorrect format 

Was mache ich falsch?
Danke!


+2

Ich habe so etwas wie '[DllImport (" DllTest.dll ", CallingConvention = CallingConvention.Cdecl)]. Angeben der Aufrufkonvention hilft? – ntohl

Antwort

7

Dies scheint 32bit/ 64 bit Problem. Es scheint so, als ob Ihre C++ - DLL und C# -Aufruf-Assembly für verschiedene Plattformziele erstellt wurde. Versuchen Sie, beide für die gleiche Plattform (entweder x86 oder x64) zu kompilieren und dann die Funktion aufzurufen.

+0

Danke !!! .. ich bearbeite meinen Beitrag mit einer anderen Frage, wenn ich mehr als 1 Funktion habe, was ich stattdessen ersetzen muss [DllImport ("DllTest.dll", EntryPoint = "TestMethod")]? – Evyatar

+1

@Evyatar besten Beitrag, dass als separate Frage. Wir bevorzugen ein Frage-pro-Frage-Format :) – CompuChip

+0

@CompuChip, yeah .. ich stelle eine neue Frage: P – Evyatar