2009-05-15 9 views
4

Ich weiß, wie Methoden in der DLL zu extern, wie kann ich externe Strukturen?Wie exportiert man eine Strukturdefinition aus einer nativen C .dll für die Verwendung in C#

Ich möchte eine C-Methode wie

extern __declspec(dllexport) myStructure getStruct(); 

zu schaffen, wo MYSTRUCTURE etwas wie

typedef struct 
{ 
    int A; 
    int B; 
    char C; 
} myStructure; 

ist Wie kann ich nennen getStruct() aus einem Stück C# -Code, ohne vorher die gleiche Definition von genaue Struktur in C#? Ich möchte eine zentrale Deklaration von myStructure behalten, damit ich nur Codeänderungen an einem Ort vornehmen muss.

Vielen Dank!

Antwort

3

Wie wäre es mit einem anderen Weg? Definieren Sie die Struktur in C# in T4 und dann gengen Sie in jedem der Projekte das neue Format:

dh. base.tt

// C# Definition von struct

in gencsharp.tt im C# Projekt umfassen "base.tt" ... Ausgang des C#

in gencplusplus. tt in der CPP-Projekt umfassen "base.tt" ... Verwendung C# gen eine CPP-H-Datei

+0

Und was ist, wenn die Struktur aus einer Third-Party-Bibliothek stammt? –

+0

Importieren Sie den Typ in die Vorlage und reflektieren sie dort? –

1

ich habe ein bisschen von P getan/Invoke mit C# und ich habe alwa ys musste Strukturen in C# definieren, die per Definition der Win32-Struktur entsprechen. Die Laufzeit verwendet die Strukturdefinition, um die Daten von nicht verwaltet zu verwaltet zu verwalten. Preets Antwort ist wahrscheinlich die beste.

Verwandte Themen