C3083 bei statischem Linken



  • Hallo!

    Wenn ich meine Anwendung statisch linke, erhalte ich immer den Kompilerfehler 3083. Code sieht in etwa wie folgt aus:

    // Static Library Header
    namespace App
    {
        namespace MyLib
        {
            class CMyView : public CView
            {
                // ...
            };
        }
    }
    
    // Static Exe Code-Datei
    namespace App
    {
        CApplication::InitInstance()    
        {
            CCreateContext CreateContext;
            DummyDocument  DummyDoc;
    
            CreateContext.m_pCurrentFrame = pFrame;
            CreateContext.m_pNewViewClass = RUNTIME_CLASS(MyLib::CMyView);
        }
    }
    

    In der Zeile 10 von beim 2. Codeteil, tritt der Fehler auf. Aber nur beim statischen Linken. Ich kann mir wirklich keinen Reim daraus machen.

    Fehlerdetails
    Error 1 error C3083: 'classMyLib': the symbol to the left of a '::' must be a type
    Error 2 error C2277: 'App::MyLib::CMyView::{ctor}' : cannot take address of this member function
    

  • Mod

    Da hier die Namen direkt verwendet werden, kann man keine Scope Operatoren benutzen. Schau Dir die Makros an und Du wirst sehen, dass hier nur ein Name erlaubt ist. Dieser name wird verwendet um die entsprechenden Variablen zu erzeugen.

    Evtl. klappt es wenn Du mit using arbeitest.



  • Martin Richter schrieb:

    Da hier die Namen direkt verwendet werden, kann man keine Scope Operatoren benutzen. Schau Dir die Makros an und Du wirst sehen, dass hier nur ein Name erlaubt ist. Dieser name wird verwendet um die entsprechenden Variablen zu erzeugen.

    Evtl. klappt es wenn Du mit using arbeitest.

    Das ist dann also ein Makro spezifisches Problem, richtig? Das ist wirklich ärgerlich, zumal Namensräume nichts Neues sind...wohl aber die Makros sehr alt. 🙄

    Mit einem using werde ich das mal probieren. Danke für den Tipp.
    Aber warum entsteht das Problem nur beim statischen Linken der Exe und der Dll bzw. Lib?


  • Mod

    Kann ich mir nicht vorstellen. Das Problem müsste grundsätzlich bestehen.



  • Martin Richter schrieb:

    Kann ich mir nicht vorstellen. Das Problem müsste grundsätzlich bestehen.

    Ist bei dieser Anwendung in der Tat so. Bei Zeiten könnte ich mal probieren, ob das Problem reproduzierbar ist.

    Die statische Lib (Dll) ist übgrigens eine eine MFC Extension Dll, wo ich _AFXEXT und DllMain entfernt habe.


Anmelden zum Antworten