DllImport und Unmanaged DLL

09/01/2008 - 10:07 von Michael Burkhardt | Report spam
Hallo ich möchte eine DLL geschrieben in unmanaged C in mein Managed C++
Projekt mit dem Framework 2.0 einbinden.
Folgendes habe ich aktuelle versucht:

using namespace System::Runtime::InteropServices;
[DllImport(L"testdll.dll", CharSet = CharSet::Auto)];
int TEST_reset (void);
int TEST_refresh (void);

Doch es gibt folgende Fehlermeldung:
C3094: 'System::Runtime::InteropServices::DllImportAttribute': anonymous
usage not allowed c:\entwicklung\cpp_c\confm70\confm70\Form1.h 1093
C2720: 'ConfM70::Form1::TEST_reset' : 'extern' storage-class specifier
illegal on members c:\entwicklung\cpp_c\confm70\confm70\Form1.h 1094
C2720: 'ConfM70::Form1::TCPOX1_refresh' : 'extern' storage-class specifier
illegal on members c:\entwicklung\cpp_c\confm70\confm70\Form1.h 1095

Was muss ich noch tun. Leider gibt es in der MSDN immer nur Codebeispiele
mit C# und nicht in C++.

Danke im Vorraus
Gruß Michael
 

Lesen sie die antworten

#1 Jochen Kalmbach [MVP]
09/01/2008 - 18:56 | Warnen spam
Hallo Michael!
Hallo ich möchte eine DLL geschrieben in unmanaged C in mein Managed C++
Projekt mit dem Framework 2.0 einbinden.
Folgendes habe ich aktuelle versucht:

using namespace System::Runtime::InteropServices;
[DllImport(L"testdll.dll", CharSet = CharSet::Auto)];
int TEST_reset (void);
int TEST_refresh (void);

Doch es gibt folgende Fehlermeldung:
C3094: 'System::Runtime::InteropServices::DllImportAttribute': anonymous
usage not allowed c:\entwicklung\cpp_c\confm70\confm70\Form1.h 1093



Die Methode muss zumindest als "static" deklariert werden!

So z.B.:

[System::Runtime::InteropServices::DllImport("kernel32.dll",
EntryPoint="GetVersion")]
[System::Security::SuppressUnmanagedCodeSecurity]
static DWORD GetVersion_PInvoke();


Aber:
Warum machst Du nicht einfach ein "include <header.h>" und rufst die
Funktion direkt auf? Warum machst Du C++/CLI und nicht C#?
Genau deswegen gibt es doch C++/CLI, damit man die "alten" C/C++-Dinge
*direkt* verwenden kann, ohne DllImport

Greetings
Jochen

My blog about Win32 and .NET
http://blog.kalmbachnet.de/

Ähnliche fragen