Beetje wazige titel, maar ik zal het proberen uit te leggen. Ik heb een class CLinkedList gemaakt (ja ik weet het, ik kan ook std::list gebruiken) en die heeft een template, zodat ik alles in dat ding kan stoppen wat ik wil:
Ga ik dit compileren in MSVC6 (in een DLL projectje) dan gaat alles goed, en geeft VC alleen een warning in de trant van 'class CLinkedList must have a DLL interface to be used by clients' (nummertje C4251). Allemaal goed dus, geen syntaxfouten. Maar, ik wil deze class juist wel gebruiken buiten de DLL. Dus, zet ik er een __declspec(dllexport) in:
Nu krijg ik van VC eerst de volgende error:
errors van andere classes die in die .h file zijn gedeclareerd. Wie weet hoe het wel moet?
C++:
1
2
3
| template<class T> class CLinkedList { // zooi }; |
Ga ik dit compileren in MSVC6 (in een DLL projectje) dan gaat alles goed, en geeft VC alleen een warning in de trant van 'class CLinkedList must have a DLL interface to be used by clients' (nummertje C4251). Allemaal goed dus, geen syntaxfouten. Maar, ik wil deze class juist wel gebruiken buiten de DLL. Dus, zet ik er een __declspec(dllexport) in:
C++:
1
2
3
| __declspec(dllexport) template<class T> class CLinkedList { // zooi }; |
Nu krijg ik van VC eerst de volgende error:
en verder nog een aantal errors (dat de class CLinkedList niet bestaat). Zet ik de declspec tussen template<class T> en class CLinkedList in:'__declspec(dllexport ) ' : ignored on left of 'int' when no variable is declared
C++:
1
| template<class T> __declspec(dllexport) class CLinkedList { |
En dan krijg ik nog es 309error C2059: syntax error : '<end Parse>'
[ Voor 6% gewijzigd door MisterData op 24-12-2002 12:10 . Reden: spastisch typen is niet goed ]