title image


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

Hallo zusammen,

ich soll eine C++ DLL in ein C# Programm einbinden. Es will mir aber nicht gelingen. Ich habe zwar die Sourcen der C++ DLL bekommen, so ganz firm drin, speziell wenn es um DLLs in C++ geht, bin ich aber nicht. Ich habe schon jede Menge Seiten gewälzt und versucht es mit meiner DLL nachzuvollziehen, aber an irgend etwas scheitert es immer noch.

Ich habe auch eine Header Datei der Quelle zur Verfügung, allerdings weiß ich nicht so genau, ob die passt. In dieser Header Datei sind ein paar Funktionen definiert, die mit einem 'extern' versehen sind. In allen Beispielen, die ich bisher im Internet gesehen habe, stand da aber immer ein 'extern "C" '. Kann es daran liegen?

Ich habe hier einfach mal den entscheidenden Teil der Header Datei reinkopiert. Kann mir jemand sagen, ob mein C# Programm hiermit alle notwendigen Informationen hat, oder ob da etwas fehlt? Falls es ausreichend ist, wie genau muss ich vorgehen, um die Funktionen in der DLL aus meinem C# Programm aufzurufen? Falls nein, was müsste in der DLL geändert werden?

#ifdef CPLUSPLUSDLL_EXPORTS

#define CPLUSPLUSDLL_API __declspec(dllexport)

#else

#define CPLUSPLUSDLL_API __declspec(dllimport)

#endif

 

CPLUSPLUSDLL_API char* fnMyDLLFunction(char*Befehl);

extern CPLUSPLUSDLL_API char TxTelegramm[100];

extern CPLUSPLUSDLL_API char RxTelegramm1[100];

extern CPLUSPLUSDLL_API char RxTelegramm2[100];

extern CPLUSPLUSDLL_API char RxTelegramm3[100];

 

In Wirklichkeit heißen die Funktionen etwas anders und nicht mit "CPLUSPLUSDLL", aber ich möchte meinen Klienten etwas "schützen".

Vielen Dank im voraus.

 

 

Hallo,

 

was du rein kopiert hast, ist nur der generische Code der IDE als das Projekt angelegt wurde sowie weiter unten ein paar Prototypes. Wirklich viel Informationen sind das nicht. Um überhaupt eine ansatzweise Aussage treffen zu können, braucht es noch eine Vielzahl weiterer Informationen:

 

 

1. Wie ist die Aufrufkonvention der Funktionen in der DLL (__stdcall oder __fastcall)?

2. Wie lauten deine Exports der Dll (def-Datei)?

3. Wie lauten deine Imports in C#?

4. Wie werden die Imports gemarshallt?

5. Da Pointer im Spiel sind, hast du sowohl das Projekt, als auch die Funktionen als "unsafe" markiert?

6. Wie werden die Pointer übergeben?

7. Welche Frameworkversion wird verwendet?

8. Was kommt am Ende bei C# raus? (exe, dll, lib, ...)?

 

LG

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: