PDA

View Full Version : [C++] DLL & Template, il linker non trova nulla...


Tommo
14-03-2008, 10:30
Salve,
ho implementato nella nostra engine una classe template FastVector, che è appunto un std::vector 10x più veloce.
Ho già proceduto a sostituire tutti gli std::vector all'interno della nostra engine, e tutto funziona a meraviglia....

Però, quando compiliamo il DLL e proviamo ad usare FastVector in un progetto esterno, tutto compila ma il linker non trova NESSUN metodo!

Ho letto in giro e pare che questo sia un problema diffuso di conflitto fra DLL e Template: il primo "congela" il codice mentre il secondo lo riscrive a compile-time... e non sono riuscito a trovare soluzioni decenti in giro.
Tuttavia Ogre3D, ad esempio, ha una classe template Singleton che è usabilissima fuori della DLL! :muro:

Qualcuno sa come si potrebbe fare per risolvere?
Grazie :D

The3DProgrammer
14-03-2008, 10:56
guarda se questo puo aiutarti:

http://www.codeproject.com/KB/cpp/MemberTemplateDLL.aspx

Tommo
14-03-2008, 13:44
Si, parla del mio problema... però nella sua soluzione io dovrei specificare nel DLL tutti i possibili tipi... ma spesso a me serve un vettore di un tipo sconosciuto nell'engine...

EDIT: PhysX contiene una classe NxArray<class T> che è utilizzabile senza problemi in progetti esterni... e con tipi definiti fuori di PhysX! Ma come fanno?:mc:

Tommo
14-03-2008, 19:24
Risolto... è bastato togliere _declspec(dllexport) dalla definizione della classe e poi includere il file h nel nuovo progetto... tanti problemi per nulla :doh: