Ich möchte meine Klasse in eine DLL auslagern, aber wie mache ich das am besten?



  • Hi,
    Ich habe es doch noch gschaft mein Projekt fertig zustellen und möchte es nun in eine DLL auslagern, dammit ich jetzt nicht immer 10Datein in ein Projekt hinzufügen muss.
    Denn, ich habe jetzt hier 8Datein:

    - Klasse1.h ( Deklaration )
    - Klasse2.h ( Deklaration )
    - Klasse3.h ( Deklaration )
    - Klasse4.h ( Deklaration )

    - Klasse 1.cpp ( Definition )
    - Klasse 2.cpp ( Definition )
    - Klasse 3.cpp ( Definition )
    - Klasse 4.cpp ( Definition )

    Alle Klassen sind von einandere abhängig, also die eine hat Eigenschaften der anderen oder die eine Klasse zeigt Werte ect. von der anderen an.
    Aber wie bekomme ich jetzt alles in eine DLL, so das ich zum Schluss nur noch eine Headerdatei der DLL hab die ich ja zu einem Projekt inkludieren muss und eine .dll Datei und noch ne .lib Datei?

    Wäre toll, wenn ihr mir sagen könnt wie ich das alles so unter ein Dach bekomme.

    Achja ich habe shcon mal das Makro getestet:

    #ifdef _cplusplus
    #define EXPORT extern "C" __declspec( dllexport )
    #else 
    #define EXPORT __declspec( dllexport )
    #endif
    
    // error
    [code]Error	4	error C2332: 'class' : missing tag name	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	21	CLineChart
    Error	7	error C2470: 'CLineChart' : looks like a function definition, but there is no parameter list; skipping apparent body	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	21	CLineChart[/code]
    
    class EXPORT Test1 {
    
    };
    
    // geht
    class __declspec( dllexport ) Test {
    
    };
    

    was läuft das schief ?

    Gruß Tobi.


  • Mod

    extern "C" kann keine Klassen exportieren.
    Dein define ist falsch!



  • okok, aber könntest du mir evtl noch sagen wie ich den Rest so in eine dll bekomme?

    Gruß Tobi.


  • Mod

    Was ist der Rest?

    __declspec(dllexport) hast Du doch schon entdeckt!

    Wie immer stellt sich mir die Frage ob Du überhaupt mal die Doku (die sogar in Deutsch existiert) gelesen hast. Darin sind x-Codebeispiele.

    http://msdn2.microsoft.com/de-de/library/a90k134d(VS.80).aspx



  • es geht mir jetzt nur darum, wie ich 4Klassen so in eine DLL bekomme das ich am ende nur eine header datei habe die ich nen project zufügen muss eine lib datei und eine dll datei.


  • Mod

    Und? Das steht doch in den Sub-Links drin:
    http://msdn2.microsoft.com/de-de/library/9xyb5w93.aspx



  • Warning	1	warning C4251: 'CGraph::m_szGraphName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	23	CLineChart
    Warning	2	warning C4251: 'CGraph::m_Values' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	24	CLineChart
    Warning	3	warning C4251: 'CGraph::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	25	CLineChart
    Warning	4	warning C4251: 'CLineChart::m_szChartName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	24	CLineChart
    Warning	5	warning C4251: 'CLineChart::m_Graphs' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	48	CLineChart
    Warning	6	warning C4251: 'CLineChart::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	49	CLineChart
    Warning	7	warning C4251: 'CGraph::m_szGraphName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	23	CLineChart
    Warning	8	warning C4251: 'CGraph::m_Values' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	24	CLineChart
    Warning	9	warning C4251: 'CGraph::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	25	CLineChart
    Warning	10	warning C4251: 'CLineChart::m_szChartName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	24	CLineChart
    Warning	11	warning C4251: 'CLineChart::m_Graphs' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	48	CLineChart
    Warning	12	warning C4251: 'CLineChart::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	49	CLineChart
    Warning	13	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cheaderpanel.cpp	55	CLineChart
    Warning	14	warning C4251: 'CGraph::m_szGraphName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	23	CLineChart
    Warning	15	warning C4251: 'CGraph::m_Values' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	24	CLineChart
    Warning	16	warning C4251: 'CGraph::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	25	CLineChart
    Warning	17	warning C4251: 'CLineChart::m_szChartName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	24	CLineChart
    Warning	18	warning C4251: 'CLineChart::m_Graphs' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	48	CLineChart
    Warning	19	warning C4251: 'CLineChart::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	49	CLineChart
    Warning	20	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	56	CLineChart
    Warning	21	warning C4244: 'initializing' : conversion from 'UINT' to 'float', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	65	CLineChart
    Warning	22	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	80	CLineChart
    Warning	23	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	80	CLineChart
    Warning	24	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	80	CLineChart
    Warning	25	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	83	CLineChart
    Warning	26	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clegendpanel.cpp	83	CLineChart
    Warning	27	warning C4251: 'CGraph::m_szGraphName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	23	CLineChart
    Warning	28	warning C4251: 'CGraph::m_Values' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	24	CLineChart
    Warning	29	warning C4251: 'CGraph::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	25	CLineChart
    Warning	30	warning C4251: 'CLineChart::m_szChartName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	24	CLineChart
    Warning	31	warning C4251: 'CLineChart::m_Graphs' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	48	CLineChart
    Warning	32	warning C4251: 'CLineChart::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	49	CLineChart
    Warning	33	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	145	CLineChart
    Warning	34	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	146	CLineChart
    Warning	35	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	152	CLineChart
    Warning	36	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	153	CLineChart
    Warning	37	warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	173	CLineChart
    Warning	38	warning C4244: 'initializing' : conversion from 'int' to 'float', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	182	CLineChart
    Warning	39	warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	187	CLineChart
    Warning	40	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	189	CLineChart
    Warning	41	warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	213	CLineChart
    Warning	42	warning C4244: 'initializing' : conversion from 'UINT' to 'float', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	240	CLineChart
    Warning	43	warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	243	CLineChart
    Warning	44	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	245	CLineChart
    Warning	45	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	245	CLineChart
    Warning	46	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	255	CLineChart
    Warning	47	warning C4244: '=' : conversion from 'UINT' to 'float', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	319	CLineChart
    Warning	48	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	332	CLineChart
    Warning	49	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	332	CLineChart
    Warning	50	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	333	CLineChart
    Warning	51	warning C4244: 'argument' : conversion from 'float' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	333	CLineChart
    Warning	52	warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	358	CLineChart
    Warning	53	warning C4244: 'argument' : conversion from 'double' to 'int', possible loss of data	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.cpp	363	CLineChart
    Warning	54	warning C4251: 'CGraph::m_szGraphName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	23	CLineChart
    Warning	55	warning C4251: 'CGraph::m_Values' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	24	CLineChart
    Warning	56	warning C4251: 'CGraph::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CGraph'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\cgraph.h	25	CLineChart
    Warning	57	warning C4251: 'CLineChart::m_szChartName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	24	CLineChart
    Warning	58	warning C4251: 'CLineChart::m_Graphs' : class 'std::list<_Ty>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	48	CLineChart
    Warning	59	warning C4251: 'CLineChart::m_iter' : class 'std::list<_Ty>::_Iterator<_Secure_validation>' needs to have dll-interface to be used by clients of class 'CLineChart'	c:\dokumente und einstellungen\steiner\eigene dateien\visual studio 2008\projects\clinechart\clinechart\clinechart.h	49	CLineChart
    Warning	60	warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:ICF' specification	CGraph.obj	CLineChart
    Warning	61	warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library	CLineChart	CLineChart
    Error	62	error LNK2001: unresolved external symbol __CrtDbgReportW	dllmain.obj	CLineChart
    Error	63	error LNK2001: unresolved external symbol __CrtDbgReportW	stdafx.obj	CLineChart
    Error	64	error LNK2001: unresolved external symbol __CrtDbgReportW	libcpmtd.lib	CLineChart
    Error	65	error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function "public: long const & __thiscall std::list<long,class std::allocator<long> >::_Const_iterator<1>::operator*(void)const " (??D?$_Const_iterator@$00@?$list@JV?$allocator@J@std@@@std@@QBEABJXZ)	CGraph.obj	CLineChart
    Error	66	error LNK2001: unresolved external symbol __CrtDbgReportW	CHeaderPanel.obj	CLineChart
    Error	67	error LNK2001: unresolved external symbol __CrtDbgReportW	CLegendPanel.obj	CLineChart
    Error	68	error LNK2001: unresolved external symbol __CrtDbgReportW	CLineChart.obj	CLineChart
    Error	69	error LNK2019: unresolved external symbol __malloc_dbg referenced in function "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char *,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z)	libcpmtd.lib	CLineChart
    Error	70	error LNK2019: unresolved external symbol __free_dbg referenced in function "void __cdecl operator delete(void *,struct std::_DebugHeapTag_t const &,char *,int)" (??3@YAXPAXABU_DebugHeapTag_t@std@@PADH@Z)	libcpmtd.lib	CLineChart
    Error	71	fatal error LNK1120: 3 unresolved externals	C:\Dokumente und Einstellungen\Steiner\Eigene Dateien\Visual Studio 2008\Projects\CLineChart\Debug\CLineChart.dll	CLineChart
    

    Darf ich keine container der std:: verwenden in dlls oder muss ich noch was im Projekt umstellen ?

    Und was ich net verstehe, die DLL setzt sich doch dann aus 4Headern und 4Cpp Datin zusammen, dann muesste ich doch eine lib und eine dll erhalten, wenns mal klappen wurde. Aber muss ich dann alle Header dann zu einem Projekt inkludieren damit er die Funktionen der lib bzw dll kennt?

    Gruß Tobi



  • Hi TObi,

    wenn man niemanden im Büro/Klasse hat von dem man das alles lernen kann
    und auch keine geeigneten Bücher / Tutorials findet, kann man es vergessen.

    Das ist meine Erkenntnis. Niemand kaut einem hier etwas vor, weil es
    immer den Beigeschmack hat, dass man nach vorgekauter Arbeit sich nicht
    mehr damit beschäftigt. Das stimmt sicher in einigen Fällen, aber ich habe
    das meiste aus dem Forum gelernt.

    Sobald ich morgen im Büro bin und die Zeit dazu finde (!) werde ich dir evtl.
    ein Beispiel und auch eine kleine Erklärung dazu posten.



  • So, dein Makro ist murks:

    #ifdef MYLIBRARY_EXPORT
    #define MYAPI __declspec(dllexport)
    #else // !MYLIBRARY_EXPORT
    #define MYAPI __declspec(dllimport)
    #endif // MYLIBRARY_EXPORT
    

    . Damit ist das schonmal korrekt 😉
    Jetzt noch in den Projekteinstellungen als Build-Define MYLIBRARY_EXPORT hinzufügen (im DLL-Projekt).

    class MYAPI foo {};
    

    sollte jetzt schonmal klappen!

    Die ganzen Warnungnen die dein Projekt ausgibt, liegen an unsauberen Code, der sich innerhalb deiner Klassen befindet!


  • Mod

    Nur als Anmerkung: Wenn Du Deine Klassen exportierst muss der Nutzer der DLL exakt die gleichen Compiler Einstellungen verwenden und den gleichen Compiler.

    Zudem musst Du zwingend die CRT und die MFC (falls benutzt) als shared DLL verwenden!



  • Ne die Dll soll nur für mich sein, ich will halt nur net staendig 8Datein meinem Projekt hinzufügen muessen um alle Funtionen zu verwenden.

    Und wegen dem unsauberen Code, was soll ich machen alle snoch mal schreiben bis er meint "Jo jetzt ist es mir sauber genug"?
    Haette sich der Compiler den nicht mal schon eher melden koennen?

    Gruß Tobi.


  • Mod

    Es liegt doch an Dir welche Warning Level Du einstellst!

    Wenn Du Dich entscheidest mit einem niedrigen Warning Level zu arbeuten um diese zu unterdrücken ist das Dein Bier. Bleibt aber immer noch schlechter Stil.



  • Aber ich habe doch nichts am warning level eingestellt? Wieso sagt er mir dann gerade erst jetzt bescheid, ist das level in ner DLL hoeher?


  • Mod

    Nein! Das ist er nicht.



  • dann liegts also nicht an meinem code?


  • Mod

    Aber sicher liegt es an Deinem Code. Die Warnungen komen doch nicht aus heiterem Himmel.



  • Warning 1 warning C4251: 'CGraph::m_szGraphName' : class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'CGraph'

    was ist damit gemeint?



  • Gib doch einfach den Errorcode in die MSDN ein. Die Errorcodes sind ja nicht aus Jux da.


  • Mod

    Du bewegst einfach den Cursor über die Fehlermeldung und drückst F1

    http://msdn2.microsoft.com/de-de/library/esew7y1w(VS.80).aspx

    Es ist genau die Warnung, die ich Dir auch schon gegeben habe:
    Wenn Du über DLL Grenzen Objekte tauscht, die eigentlich nur über inline Funktionen leben, dann gehst Du ein Kompatibiltätsrisiko ein.

    Deshalb bekommst Du diese Warnung auch erst, seitdme Du das als DLL kompilierst.



  • hmm und wenn ich das ganze einfachn ur als statische lib generieren will und auf die dll verzichte muesste es doch sdann gehen?


Anmelden zum Antworten