funktion aus Dll kann nicht benutzt werden aufgrund der Sicherheitsebene
-
Hallo Leute,
meine Dll enthält folgende funktion:
#pragma once using namespace System; namespace TestDllDotNet { public ref class Test { // TODO: Die Methoden für diese Klasse hier hinzufügen. public: static int Init(); }; }
Die funktion sieht folgendermaßen aus.
int TestDllDotNet::Test::Init() { return 0 }
diese Dll habe ich über einen Verweis in ein C# Projekt eingefügt und folgenden aufruf:
TestDllDotNet.Test.Init();
hier erhalte ich folgende Fehlermeldung:
D:..\TestCSharp\Form1.cs(21,38): Fehler CS0122: Der Zugriff auf "TestDllDotNet.Test.Init()" ist aufgrund der Sicherheitsebene nicht möglich.Ich verstehe die Fehlermeldung nicht, da Funktion Init ja ein public Member meiner Klasse ist. Woran könnte dies liegen?
MfG
-
Muss so gehen.
Kann sein, dass das Referenzierte Assembly nicht aktuell ist?
Simon
-
ja das geht das Problem ligt an meinem enum das ich über ein Header File in die Klasse einbinde
typedef enum { Error_NoError = 0, Error_NotInitialisized, Error_NoValidHandle, }tErrorCode ;
#pragma once #include "types.h" using namespace System; namespace TestDllDotNet { public ref class Test { // TODO: Die Methoden für diese Klasse hier hinzufügen. public: static tErrorCode Init(); }; }
tErrorCode TestDllDotNet::Test::Init() { return 0 }
anscheinend kennt er über den verweis den Rückgabetyp nicht. Wie mache ich den in C# bekannt
Wie exportiere ich den Typ das er in C# bekannt ist?
MfG
-
Achso dieser Type Header File ist ein ganz normales C Header File ohne irgendwelche namspaces.
könnte es damit was zu tun haben?
MfG
-
Destiniy schrieb:
Achso dieser Type Header File ist ein ganz normales C Header File ohne irgendwelche namspaces.
könnte es damit was zu tun haben?
MfG
Ja. Mappe deine C- Typen auf C++/CLI um.