Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

13.03.2012, 22:02

STL Container exportieren

Hallo ich bin grade dabei mir ein paar Helferchen für meine Engine zu schreiben und bin nun beim Input angekommen. Da ich versuche diesen code wiederverwertbar zu halten möchte ich das ganze als Dll bereitstellen. Nun das Problem, in meiner InputManager Klasse möchte ich ein "std::map<BYTE,std::vector<FunctionsPointer>>" erstellen allerdings bekomme ich die Warnung:

Quellcode

1
Warnung 1   warning C4251: 'Input::InputManager::m_subscribtionList': class 'std::map<_Kty,_Ty>' erfordert eine DLL-Schnittstelle, die von Clients von class 'Input::InputManager' verwendet wird   c:\users\...\inputmanager.hpp   33  1   Engine


Im Internet habe ich Lösungsansätze gefunden die mit

C-/C++-Quelltext

1
template class __declspec(dllexport) std::map<"Definition die man haben möchte>

arbeiten. Allerdings wurde auch gewarnt das die Dll dann nur noch mit der gleichen Compiler Version funktioniert und es zu Programmfehler kommen kann.

Hat jemand eine Idee wie ich das ganze anders lösen kann ohne auf die Funktionalität von map und vector zu verzichten ?
greate minds discuss ideas;
average minds discuss events;
small minds discuss people.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

13.03.2012, 22:23

Was hat Code-Wiederverwertbarkeit mit DLL zu tun?
Soweit ich weiß, gibt es keine schöne Lösung für dieses Problem.
Nimm lieber in Kauf, dass du deine DLL für verschiedene Compiler kompilieren musst.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

14.03.2012, 00:10

Wenn du portabel und Compilerunabhängig sein willst, dann muss das Interface deiner dll sowieso pures C sein.

Werbeanzeige