Wie kann ich auf eine variable in einer unmanaged C dll zugreifen

18/11/2008 - 14:22 von Uwe Lesta | Report spam
Hallo NG,

Ich will von CSharp aus auf eine variable in einer C dll zugreifen.

dll code:
-
...
__declspec(dllexport) int Slinesize;
...
int Slinesize = 1024;
...
-

CSharp:
-
[DllImport(DllFileName)]
internal static extern int Slinesize;
-

Gibt beim übersetzen einen compiler error
The modifier 'extern' is not valid for this item

Gibt es eine möglichkeit an den variablenwert in CSharp dranzukommen ?



Kind regards

Uwe
Lesta at SBS-Softwaresysteme.de
 

Lesen sie die antworten

#1 Frank Dzaebel
18/11/2008 - 15:34 | Warnen spam
Hallo Uwe,

__declspec(dllexport) int Slinesize;
int Slinesize = 1024;



Das müsste dann zum Beispiel so aussehen:
Unmanaged Win32DLL:

long foo = 42;
extern "C" __declspec(dllexport) long Foo()
{
return foo;
}

__________________

[DllImport(@"Win32DLL.dll")]
internal static extern int Foo();

private void Form1_Load(object sender, EventArgs e)
{
int i = Foo();
}


__________________

[Tiefe Einblicke in CLR: Marshalling zwischen verwaltetem und nicht
verwaltetem Code]
http://msdn.microsoft.com/de-de/mag...64193.aspx

[Lernprogramm für die Plattformaktivierung (C#)]
http://msdn.microsoft.com/de-de/lib...88468.aspx

[Call Unmanaged DLLs from C#, Killing Processes Cleanly]
http://msdn.microsoft.com/en-us/mag...01501.aspx

[.NET Column: Calling Win32 DLLs in C# with P/Invoke]
http://msdn.microsoft.com/en-us/mag...64123.aspx

Hier auch ein Tool, das Dir dabei behilflich sein kann:

[Managed, Native, and COM Interop Team - Home]
http://www.codeplex.com/clrinterop
("PInvoke Interop Assistant")



ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen