OldSchoolHack

Registrieren / Anmelden Deutsch

C++ | DLL -> C#


icon C++ | DLL -> C# #1

Anmeldungsdatum: Mär 2011

Beiträge: 29

Benutzer-Bewertung:

1 positiv
0 negativ
Hallo, ich habe in C++ eine dll geschrieben [..].
Jetzt habe ich die eine Funktion:
TEXT Code:
  1. __declspec(dllexport) void SetHeaderText(char* text);
  2. void SetHeaderText(char* text) { MessageBox(NULL, "Text", "SetHeaderText", MB_OK | MB_SYSTEMMODAL); HeaderText = text; }

Die ich mit C# "ancallen" möchte.
Allerdings funktioniert dies nicht.
Die MessageBox erscheint auch nicht.

C#:
TEXT Code:
  1. [DllImport("etsov.dll", CallingConvention = CallingConvention.Cdecl)]
  2. public static extern string SetHeaderText(string text);

Aufruf:
TEXT Code:
  1. ClassName.SetHeaderText("Test von C#");


__________________

TEXT Code:
  1. cout << "Veröffentliche Hacks: Unbekannt" << endl;
icon #2

Anmeldungsdatum: Mai 2011

Beiträge: 419

Benutzer-Bewertung:

199 positiv
8 negativ
CPP Code:
  1. __declspec(dllexport) void SetHeaderText(char* text);
Das alleine ist nur ein C++ Funktions-export. Da man in C++ z.B.
Funktionen überladen kann, wird eben nicht nur "SetHeaderText" im
Export Table der Dll stehen...

http://abload.de/img/exportpto64.png

Was du brauchst, ist "C" Linking ...

http://abload.de/img/export24zp64.png

Jetzt kannst du die Exports der Dll auch in C# benutzen:

CPP Code:
  1. [DllImport("TestDll.dll", EntryPoint = "TestFunction")]
  2. public static extern void TestFunction();
  3.  
  4. static void Main(string[] args)
  5. {
  6.      TestFunction();
  7. }
Die C++ dll und C# .exe müssen natürlich im selben verzeichnis sein...

__________________

http://abload.de/img/signaturmitoshlogos2ufb.jpg
http://abload.de/img/pfeila4uzk.png Da unten ist ein Like-Button, benutze ihn doch
1 positiv
0 negativ
Dieser Beitrag wurde bewertet von:
KingBurger (So 26. Jul 2015, 19:49)