C Dll in .Net einbinden
-
Hallo Leute,
wie kann man eine C Dll in .Net einbinden?
Die Dll besitzt eine Reihe von selbst Definierten Typen und Funktionen. Wobei auch Zeiger auf Dunktionen übergeben werden müssen.
Es kommen Fehlermeldungen wie:
1>d:\..\testdotnetdll\../ReaderDll.h(361) : error C3389: __declspec(dllexport) kann bei /clr:pure oder /clr:safe nicht verwendet werden.
1>d:\..\testdotnetdll\../ReaderDll.h(361) : error C3395: "Init": __declspec(dllexport) kann nicht mit der __clrcall-Aufrufkonvention auf eine Funktion angewendet werden.MfG
-
-
der Link bezieht sich ja erst mal auf C# das ist für mich der zweite Schritt ersmal möchte ich die Dll zum laufen bringen wenn ich ein C++/CLI Forms Projekt erzeuge.
Achso im Headerfile der Dll sind alle funktionen mit Extern C deklariert
MfG
-
Der Link war aus dem C# Forum, hat aber generell für .NET Gültigkeit.
Für dich ist wohl die C++/CLI Bridge interessant (nehme ich an, da Du im C++/CLI Forum postest).Simon
Edit:
Zu deinem Problem: Sepzifiziere /clr anstelle von /clr:pure oder /clr:safe
http://msdn.microsoft.com/en-us/library/k8d11d4s.aspx
-
Du kannst die DLL einfach einbinden, wie wenn Du kein C++/CLi verwenden würdest. Wie Du aber an der Fehlermeldung erkennen kannst, gibt es da gewisse Randbedingungen! (also einfach auf "nur" /clr umstellen).
-
was bedeutet clr und wie kann ich das umstellen.
Ich habe noch kein .NET Projekt erstellt vorher.
MfG
-
ich kann meine Dll jetzt in c++/cli einbinden.
jetzt nochmal zu C#
wie funktionieren die möglichkeiten aus dem Link?
1. Unter C# P/Invoke verwenden (DllImport)
2. Unter C# eine C++/CLI Bridge einbinden, die ein .NET Interface um dein C Code baut.
3. Unter C# eine COM Library einbinden, die dein C Code kapselt.speziell wie bekomm ich meine enums und selbs definierten types nach C#
MfG