Problem mit Membervariable



  • Hallo, ich erhalte folgenden Fehler, wenn ich die Headerdatei einer
    zu nutzenden DLL einbinde:

    Fehler	1	error C2011: 'CPDFSplitMerge': 'class' Typneudefinition	...axpdf\cpdfsplitmerge.h
    

    Dies passiert aber NUR dann, wenn ich die Membervariable zur DLL
    für die ganze Klasse anlege. Innerhalb einer einzelnen Funktion klappt es
    mit

    CPDFSplitMerge m_var;
    

    wunderbar.

    Kann sich das jemand erklären? Die Headerdatei sieht so aus:

    // Machine generated IDispatch wrapper class(es) created with Add Class from Typelib Wizard
    
    // CPDFSplitMerge wrapper class
    
    class CPDFSplitMerge : public COleDispatchDriver
    {
    public:
    	CPDFSplitMerge(){} // Calls COleDispatchDriver default constructor
    	CPDFSplitMerge(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
    	CPDFSplitMerge(const CPDFSplitMerge& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
    
    	// Attributes
    public:
    
    	// Operations
    public:
    
    	// IPDFSplitMerge methods
    public:
    	void Split(LPCTSTR strInPdf, LPCTSTR strSplit, LPCTSTR strOutPdf)
    	{
    		static BYTE parms[] = VTS_BSTR VTS_BSTR VTS_BSTR ;
    		InvokeHelper(0x1, DISPATCH_METHOD, VT_EMPTY, NULL, parms, strInPdf, strSplit, strOutPdf);
    	}
    	void Merge(LPCTSTR strInFiles, LPCTSTR strOutFile)
    	{
    		static BYTE parms[] = VTS_BSTR VTS_BSTR ;
    		InvokeHelper(0x2, DISPATCH_METHOD, VT_EMPTY, NULL, parms, strInFiles, strOutFile);
    	}
    	void SetCode(LPCTSTR strCode)
    	{
    		static BYTE parms[] = VTS_BSTR ;
    		InvokeHelper(0x13, DISPATCH_METHOD, VT_EMPTY, NULL, parms, strCode);
    	}
    	long GetNumberOfPages(LPCTSTR strFile, LPCTSTR strPasswd)
    	{
    		long result;
    		static BYTE parms[] = VTS_BSTR VTS_BSTR ;
    		InvokeHelper(0x14, DISPATCH_METHOD, VT_I4, (void*)&result, parms, strFile, strPasswd);
    		return result;
    	}
    
    	// IPDFSplitMerge properties
    public:
    
    };
    

  • Mod

    Du solltest die Datei nur einmal in Dein Projekt includen. Vermutlich hast Du in mehreren Header dateien auch diesen #include!

    Such mal nach "Include Guards"
    http://en.wikipedia.org/wiki/Include_guard



  • Danke Martin. Es ist wie du vermutet hast *schäm*
    👍


Anmelden zum Antworten