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.


Anmelden zum Antworten