Brauche Hilfe bei einem VC++ 6 Projekt



  • Hier ist einer von vielen Beiträgen zum Thema dll/lib einbinden:
    http://www.c-plusplus.net/forum/299144



  • Die lib ist bereits eingebunden. Ohne die dll kann ich das kompilierte Programm trotzdem nicht starten.



  • Zapeth schrieb:

    2. weil im Sourcecode zahlreiche defines vorzufinden sind wie dieser hier

    #ifdef	build_jcclass_dll
    #define JCCLASS_DLL __declspec(dllexport)
    #else
    #define JCCLASS_DLL __declspec(dllimport)
    #endif
    

    Tauchen diese defines (bzw. die Klassen, die sie verwenden) nur in Headerdateien (*.h) auf ?

    Für sich alleine sind die noch kein Zeichen dafür, dass auch die DLL mit dem Sourcecode erstellt werden kann. Es ist nicht unüblich für ein DLL-Projekt und die späteren Verwender eine gemeinsame Headerdatei zu erstellen. Die enthält dann entsprechende defines zum Umschalten zwischen Erzeugen und Verwenden.

    Nur wenn sich zu den Klassen, die diese defines verwenden, auch Implementierungen finden (in *.cpp Dateien), hätte man eine Chance, die DLL selbst zu erzeugen.



  • Ok, zahlreiche waren es doch nicht, nur 3 (ich dachte es wären mehr) und die waren alle in Header Dateien.

    Soll also heißen ohne entsprechenden zusätzlichen Source Code ist es nicht möglich die dll zu erstellen? 😞

    Ich hatte das schon befürchtet, wollte aber doch Gewissheit haben.



  • Es müsste schon etwas in einer Headerdatei sein in der Form

    class JCCLASS_DLL Dings
    {
      // ...
    
      void Bums();
    };
    

    und in einer cpp-Datei sowas

    void Dings::Bums()
    {
      // ...
    }
    

    Sonst gehören diese Header, genau wie die Lib, nur zum Zubehör zur Nutzung der DLL ...



  • nn schrieb:

    Es müsste schon etwas in einer Headerdatei sein in der Form

    Im Code steht es auch genauso, allerdings scheint das hier nicht der Fall zu sein

    nn schrieb:

    und in einer cpp-Datei sowas

    Also schätze ich mal, dass man da nichts ohne die fehlenden Dateien machen kann?



  • Zapeth schrieb:

    Im Code steht es auch genauso, allerdings scheint das hier nicht der Fall zu sein

    Wie meinst Du das ? Wo steht es und wo nicht ?

    Kannst Du mal ein paar Zeilen posten, wo dieses JCCLASS_DLL verwendet wird ?

    Zapeth schrieb:

    Also schätze ich mal, dass man da nichts ohne die fehlenden Dateien machen
    kann?

    Wenn wir nicht noch weitere Entdeckungen machen, wohl nicht.



  • Ich meinte genau in dem Format, das du beschrieben hast. Hier ein Beispielauszug aus dem Code:

    class JCCLASS_DLL PS_Polygon
    {
    	PS_FloatUVOrigin m_Origin;
    	PS_FloatUVArray  m_Points;
    	void SetIterator(PS_FloatUV& uv, U32 i) const;
    public:
    	void Mask(CDC* pDC, CSize& size, CSize& bmsize) const;
    	PS_Polygon(void);
    	PS_Polygon(const PS_Polygon& source);
    	void CopyFrom(const PS_Polygon& source);
    	CRect Rect(CSize size) const;
    	CRect PositiveRect(CSize size) const;
    	PS_Polygon& operator << (const PS_FloatUVOrigin& uv);
    	const PS_Polygon& operator >> (PS_FloatUVOrigin& uv) const;
    	PS_Polygon& operator << (const PS_FloatUV& uv);
    	const PS_Polygon& operator >> (PS_FloatUV& uv) const;
    	PS_Polygon& operator = (const PS_Polygon& x);
    	operator BOOL (void) const;
    	void InsertAt(U32 i, PS_FloatUV& uv);
    	void RemoveAt(U32 i);
    	S32  FindUV(PS_FloatUV& uv) const;
    	S32  GetNumberOfVertices(void) const { return m_Points.GetSize(); }
    	const PS_FloatUV& operator[](U32 position) const { return m_Points[position]; }
    	PS_FloatUV& operator[](U32 position) { return m_Points[position]; }
    	friend JC_Buffer& operator << (JC_Buffer& buf, PS_Polygon& p);
    	friend JC_Buffer& operator >> (JC_Buffer& buf, PS_Polygon& p);
    };
    

    Zu den entsprechenden Funktionen die hier drinnenstehen konnte ich jedoch keine weiteren Informationen finden, also sie stehen in keiner .cpp oder so drinnen.



  • Zu Header und lib fehlt dir einfach die zugehörige DLL, die die Implementation enthält. Wenn du die nicht auftreiben kannst, wird das wohl nichts.



  • Tja, dann wars das wohl. Schade ich hätte das Tool wirklich gut gebrauchen können.

    Naja egal, danke trotzdem für eure Hilfe, jetzt habe ich wenigstens Gewissheit.



  • Ok, zahlreiche waren es doch nicht, nur 3 (ich dachte es wären mehr) und die waren alle in Header Dateien.

    Soll also heißen ohne entsprechenden zusätzlichen Source Code ist es nicht möglich die dll zu erstelle


Anmelden zum Antworten