È valido sviluppare una DLL in C++ che restituisca boost ai puntatori condivisi e li utilizzi come parametri?Va bene usare boost :: shared ptr nell'interfaccia DLL?
Quindi, è corretto esportare funzioni come questa?
1.) boost::shared_ptr<Connection> startConnection();
2.) void sendToConnection(boost::shared_ptr<Connection> conn, byte* data, int len);
In particolare: fa il lavoro di conteggio di riferimento oltre i confini DLL o sarebbe il requisito di essere che EXE e DLL utilizzare lo stesso tempo di esecuzione?
L'intenzione è di superare i problemi con la proprietà dell'oggetto. Quindi l'oggetto viene cancellato quando sia dll che exe non lo fanno più riferimento.
ATTENZIONE: se si sta collegando il CRT statico si avranno problemi. Ogni modulo collegato staticamente al CRT ottiene il proprio heap. Se tutti i moduli si collegano alla DLL CRT, condivideranno tutti un heap. – Zac