Plugin Framework



  • Skippy schrieb:

    ist ja schonmal schön zu wissen das sdt::map noch gibt habe vor einigen wochen gewechselt von DEV C ++ nach Visual Studio nun gehen ja einige sachen nicht mehr z.b. sdt::string womit ich in meinen funktionen die ganze Zeit gearbeitet habe oder auch das makro IFDIR bzw bei ms heissts IFDIR

    ????
    Vielleicht solltest Du nur #include <string> machen, dann geht auch mit MS-VC alles...

    Skippy schrieb:

    im original habe ich ja folgendes CDWordArray m_dwa;

    Dann würde ich auch lieber zu einem

    std::vector<DWORD> m_dwa
    

    tendeieren...

    Skippy schrieb:

    und beim map?
    der erste teil wäre am besten CString aber was mach mit dem DWORD?

    sdt::map<CString, DWORD> m_dwa;
    


  • @asijo sorry irgendwie versteh ich nicht was du meinst könntest das mal bitte für dumme erklären

    @dEUs danke irgendwie bringt mich dieses C vor allem durcheinander (z.b. CString)

    @Jochen Kalmbach naja vector wird mir nichts bringen da ich ja eine beziehung zwischen dem handle HMODUL einer dll und dem befehl schaffen muss.

    das heisst bildlich vorgestellt hab ich dann eine Tabelle
    in der ich dann alle Virtuellen Verzeichnisse des Servers habe und jeweils in der gleichen zeile den handle auf die jeweilige dll

    dieser dll übergebe ich dann einen string die arbeitet damit und gibt mir einen formatierten string zurück den ich dann auf einen socket zum clienten sende nachdem ich den header hinzugefügt habe



  • danke schonmal für die hilfe

    hab den code jetzt bei mir abgeändert

    // ************ The Plugin System Loading ......
    // ************ Load all plugins into Memory ......
    
      char filepath[MAX_PATH];
    
      //who are we really? Get the Exe Path
      GetModuleFileName(AfxGetApp()->m_hInstance,filepath,MAX_PATH-1);
      SetCurrentDirectory(ExtractFilePath(filepath));
      CFileFind finder;
      CString strWildCard = _T("*.plx"); //Die Endung der Plugins
    
      //call this to set up the finder to iterate through all the plugins
      BOOL bWorking = finder.FindFile(strWildCard);
      while (bWorking)
      {
        //have to call FindNextFile() before GetFileName() or GetFilePath()
        //because FindFile just sets the object up and returns
        //true if _ANY_ files were found
        bWorking = finder.FindNextFile();
    	if (finder.IsDots() || finder.IsDirectory())
    		continue;
    
        HMODULE hm = LoadLibrary(finder.GetFilePath());
        if ( !hm )
        {
          MessageBox("couldn't load");
        }
        else
        {    
          MessageBox("lade Plugin");
    	  //loaded OK, so add each library's HMODULE to an array.
          //m_dwa is an MFC CDWordArray
          m_dwa.Add((DWORD)hm);
    
          m_dwa2.insert(std::map<CString, DWORD>::value_type(finder.GetFileName(), (DWORD)hm) );
        }
      }
    

    im header hab ich die map so definiert

    typedef std::map<CString, DWORD> m_dwa2; //fürs Plugin-System

    nun bekomme ich folgende fehlermeldung

    C:\SkippSerV\ArbeitsVersion\SERWEVW.CPP(145) : error C2143: syntax error : missing ';' before '.'
    C:\SkippSerV\ArbeitsVersion\SERWEVW.CPP(145) : error C2143: syntax error : missing ';' before '.'

    für folgende zeile

    m_dwa2.insert(std::map<CString, DWORD>::value_type(finder.GetFileName(), (DWORD)hm) );
    


  • Ja, ist ja auch totaler Unsinn.
    Weißt du überhaupt, was ein typedef macht?



  • yep dacht ich eigentlich

    ich habs ja auch probiert es so zu machen wie immer

    normalerweise kommt danach ja noch ein

    m_dwa2 plx_handles;

    aber das gibt dann 42 warnings

    z.b. hier die ersten zeilen

    C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\xtree(201) : warning C4786: '?rbegin@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@QAE?
    AV?$reverse_bidirectional_iterator@Viterator@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@U?$pair@$$CBVCString@@K@3@AAU43@PAU43@H@2@XZ' 
    : identifier was truncated to '255' characters in the browser information
            C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\map(46) : see reference to class template instantiation 'std::_Tree<class CString,struct std::pair<class CString const ,unsigned long>,struct std::map<class CString,unsigned long,struct std::
    less<class CString>,class std::allocator<unsigned long> >::_Kfn,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
            C:\SkippSerV\Neuer Ordner\SkippSerV\serwevw.h(114) : see reference to class template instantiation 'std::map<class CString,unsigned long,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
    C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\xtree(203) : warning C4786: '?rbegin@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@QBE?
    AV?$reverse_bidirectional_iterator@Vconst_iterator@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@U?$pair@$$CBVCString@@K@3@ABU43@PBU43@H@
    2@XZ' : identifier was truncated to '255' characters in the browser information
            C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\map(46) : see reference to class template instantiation 'std::_Tree<class CString,struct std::pair<class CString const ,unsigned long>,struct std::map<class CString,unsigned long,struct std::
    less<class CString>,class std::allocator<unsigned long> >::_Kfn,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
            C:\SkippSerV\Neuer Ordner\SkippSerV\serwevw.h(114) : see reference to class template instantiation 'std::map<class CString,unsigned long,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
    C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\xtree(205) : warning C4786: '?rend@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@QAE?AV
    ?$reverse_bidirectional_iterator@Viterator@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@U?$pair@$$CBVCString@@K@3@AAU43@PAU43@H@2@XZ' : 
    identifier was truncated to '255' characters in the browser information
            C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\map(46) : see reference to class template instantiation 'std::_Tree<class CString,struct std::pair<class CString const ,unsigned long>,struct std::map<class CString,unsigned long,struct std::
    less<class CString>,class std::allocator<unsigned long> >::_Kfn,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
            C:\SkippSerV\Neuer Ordner\SkippSerV\serwevw.h(114) : see reference to class template instantiation 'std::map<class CString,unsigned long,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
    C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\xtree(207) : warning C4786: '?rend@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@QBE?AV
    ?$reverse_bidirectional_iterator@Vconst_iterator@?$_Tree@VCString@@U?$pair@$$CBVCString@@K@std@@U_Kfn@?$map@VCString@@KU?$less@VCString@@@std@@V?$allocator@K@3@@3@U?$less@VCString@@@3@V?$allocator@K@3@@std@@U?$pair@$$CBVCString@@K@3@ABU43@PBU43@H@2@
    XZ' : identifier was truncated to '255' characters in the browser information
            C:\Programme\Microsoft Visual Studio\VC98\INCLUDE\map(46) : see reference to class template instantiation 'std::_Tree<class CString,struct std::pair<class CString const ,unsigned long>,struct std::map<class CString,unsigned long,struct std::
    less<class CString>,class std::allocator<unsigned long> >::_Kfn,struct std::less<class CString>,class std::allocator<unsigned long> >' being compiled
    


  • Na und? Du kannst doch lesen oder? Dann les mal bitte die Warnings...! 🙄



  • hättest du nen Hinweis was ich machen soll? das einzige was ich bis jetzt dazu gefunden habe ist ZITAT:

    Yes, it's perfectly normal for VC6

    so dann entweder #pragma warning(disable: 4786) einfügen

    oder nach VC7 wechseln.

    wenigstens nen kleinen stubser in die richtige richtung, Biiiiitttee 🙄



  • Man. Les doch die Warnung. Da steht's doch drin: Der Debugbezeichner hat mehr als 255 Zeichen. WHO CARES?!



  • @deus ich arbeite grad mal 3 wochen mit VC6. habe vorher nur mit DEV C++ gearbeitet und da kommt diese Warnung nicht. hab alles was google über die fehlermeldung hat gelesen und die einzigen beiden Lösungen die ich gefunden habe waren wie ich schon geschrieben habe die warnung zu deaktivieren oder umzusteigen auf VC7 da er mit "debug identifier" umgehen kann die länger als 255 Zeichen sind.

    habe mir auch nochmal tutorials angesehen in der Hoffnung das ich einfach was übersehen habe. aber immer kommt diese fehlermeldung.

    mag sein das es nur ein kleiner Schusselfehler ist aber ich komme leider nicht dahinter



  • Du hast doch Deine Frage schon beantwortet! Oder was ist noch Dein Problem?

    Du musst in der CPP-Datei ganz oben ein

    #pragma warning(disable: 4786)
    

    einbauen (oder in einer H-Datei die immer als erstes includiert wird (z.B. stdafx.h)



  • nur ist das doch keine Fehlerbehebung, oder ich deaktiviere die Fehlermeldung nur einfach. habe ja gehofft man kanns im code "beseitigen".
    So hab ichs ja mittlerweile erstmal gemacht damit ich am code weiterarbeiten kann.

    Wäre halt nur schön wenn ich erstmal ohne solche #pragmawarning(disable:.... "spielchen" auskommen würde.



  • Ich glaube, du hast da nen Logikfehler:
    Es ist ja keine Fehler, sondern eineWarnung.
    Und diese kannst du getrost ignorieren.



  • PS: VC7 behebt den "Fehler" auch nicht, sondern da ist diese Warnung nur per "default" deaktiviert 😉



  • @Paul_C. yep ich weiss das man warnungen ignorieren kann nur soll aus dem Programm nen Projekt werden an dem mehrere Einsteiger mitwirken und da wollt ich halt sowas eben so wenig wie möglich drin haben.
    Ich weiss auch das es sich bei größeren Programmen meisst ar nicht vermeiden lässt (siehe z.b. Code von CrystalSpace)

    @Jochen Kalmbach: wenn das so ist lassen wir das einfach



  • Jochen Kalmbach schrieb:

    PS: VC7 behebt den "Fehler" auch nicht, sondern da ist diese Warnung nur per "default" deaktiviert 😉

    Ist das wirklich so? 😕

    Habe den VC++7.1, der kann das ohne Probs.



  • Vielleicht täusche ich mich ja, aber hast Du in die PDB-Datei geschaut ob der String wirklich größer als 255 Zeichen ist?

    In der MSDN wird nur erklärt, dass er "Off-By-Default" ist, nicht aber dass er nicht mehr vorkommt...
    http://msdn.microsoft.com/library/en-us/vclang/html/vclrfCompilerWarningsThatAreOffByDefault.asp

    Aber es ist auch möglich, dass es jetzt geht... (das PDB-Format hat sich ja auch irgendwann mal ein wenig geändert...)


Anmelden zum Antworten