managed dll ohne schlüsselwort ref



  • Hi,

    ich habe eine dll die mit clr::pure erstellt wurde

    //.h
    
    #pragma once
    
    public class test
    {
    public:
      test(){}
    
      void bla();
    
    };
    
    //.cpp
    
    #include "stdafx.h"
    #include "test.h"
    
    void test::bla()
    {
    }
    

    wenn ich die dll in meinem clr::pure projekt einbinde und eine referenz erstellen will mit

    test ^test1;
    

    bekomm ich nur ein "Das symbol ist nicht definiert"

    wenn ich das aber das schlüsselwort ref in der dll verwende funktioniert das
    ganze.

    public ref class test
    {
    public:
    

    meine frage ist jetzt wozu brauche ich hier das schlüsselwort ref. da ich die
    dll mit clr::pure erstelle müsste das doch egal sein oder?

    thx



  • "pure" ändert an der Sprache nix, C++/CLI bleibt C++/CLI.
    "pure" stellt nur sicher dass kein native *Code* erzeugt wird.
    Du kannst aber weiterhin normale "nicht ref" Klassen verwenden. Für die wird dann halt genau so CLI Code generiert statt x86/x64/... Code.



  • ok soweit hab ich das auch vertanden. nur kann ich wenn ich kein "ref class" verwende, nicht auf die klasse zugreifen wenn ich die dll in meim projekt einbinde. bekomm dann eben nur ein "Das symbol ist nicht definiert". meine frage ist jetzt wieso?

    lg



  • Ich nehme an, weil sich die Klasse in keinem public Namespace befindet.



  • namesapce ist immer public:

    public class bla
    public ref class bla

    ohne ref eben kein zugriff auf die klasse in dll. oder meinst du was anderes?



  • dark123 schrieb:

    namesapce ist immer public:

    public class bla
    public ref class bla

    ohne ref eben kein zugriff auf die klasse in dll. oder meinst du was anderes?

    Ja, ich meine etwas anderes... nähmlich den Namespace.

    public namespace mytest
    {
       public class test
       {
       };
    }
    

Anmelden zum Antworten