none
Win32-Enum importieren RRS feed

  • Frage

  • Hallo

    Kann man ein Win32-C++-Enum:

    typedef enum _MixedFlags
    {
       Val1 = 0x0,
       Val2 = 0x1,
       Val3 = 0x2,
       Val4 = 0x4,
    
    } MixedFlags;
    

    definiert in einer unmanaged DLL in der selben Solution
    in managed C++ verwenden/importieren?
    Googlen meint nein, mann muss hier wie dort definieren. Mit Stand von 2007.
    Ist das nach wie vor gültig?
    Geht es evtl umgekehrt?

    Gruß,
    Christoph

    Freitag, 27. August 2010 16:03

Antworten

  • OK! Es geht also pur um eine unmanaged DLL.

    In diesem Fall ist die Antwort einfach: enums kann man nicht exportieren!

    enums sind Werte, die der Compiler als Konstanten gesagt bekommen und haben keine Linkage.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Sonntag, 29. August 2010 14:56
    Moderator

Alle Antworten

  • Ganz verstehe ich Dein Problem nicht. Diesen enum im unmanaged Bereich kannst Du in C++/CLI überall benutzen.

    Du benötigst allerdings einen managed enum, wenn der Code auch im managed Bereich exportiert/genutzt werden soll.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Sonntag, 29. August 2010 12:40
    Moderator
  • Am 29.08.2010 14:40, schrieb Martin Richter [MVP]:

    Ganz verstehe ich Dein Problem nicht. Diesen enum im unmanaged Bereich kannst Du in C++/CLI überall benutzen.
    Du benötigst allerdings einen managed enum, wenn der Code auch im managed Bereich exportiert/genutzt werden soll.

    Ich lade die unmanaged DLL über LoadLibrary in managed C++, sie gehört
    nicht zum selben Projekt.
    Die Export-Funktionen krieg' ich mit GetProcAdress, kann ich "irgendwie"
    auch ein Enum in der DLL öffentlich machen und "importieren"?

    Ohne Zugriff auf Header... sondern aus der Binary...?
    Also kann die DLL das Enum als Typ exportieren?

    Gruß,
    Christoph

    Sonntag, 29. August 2010 14:17
  • OK! Es geht also pur um eine unmanaged DLL.

    In diesem Fall ist die Antwort einfach: enums kann man nicht exportieren!

    enums sind Werte, die der Compiler als Konstanten gesagt bekommen und haben keine Linkage.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Sonntag, 29. August 2010 14:56
    Moderator
  • Ok, Danke,
    klare Ansage!

    Gruß,
    Christoph

    Sonntag, 29. August 2010 20:44