Pracuję właśnie nad biblioteką do obsługi pewnego rodzaju mojego pliku. Wcześniej tą funkcjonalność miałem zintegrowaną w trzech klasach z kodem gry, ale zdecydowałem się na wyodrębnienie tego kawałka kodu do DLL'ki.
Zauważyłem, że jeśli w klasach używam typów prostych, jak int czy char*, wszystko jest w porządku. Dotychczas w moim managerze wykorzystywałem obiekty vector i string - vector który zawiera stringi. Gdy tego samego wektora ze stringami używam w DLL, kompilator wypisuje mi warning C4251 o treści:
class 'std::basic_string<_Elem,_Traits,_Ax>' needs to have dll-interface to be used by clients of class 'test'
tak samo jest z 'std::vector<_Ty>'.
Moje pytanie więc. Jak zdefiniować wspomniany "dll-interface" aby móc swobodnie korzystać z klasy vector, string czy dowolnej, innej w bibliotece DLL?
Obecnie nie mogę używać stringów ponieważ program się wykrzacza. Gdy eksperymentalnie zmieniłem stringi na łańcuchy char*, wszystko jest jak należy. Dlatego podejrzewam, że problem ma związek z tym warunkiem o "dll-interface"
Czy może mieć to jakiś związek ze stosem? Zanim doszedłem do tego co teraz powyżej opisałem miałem różne przypadki i błędy i czytałem m.in. o konflikcie stosu aplikacji i biblioteki, czy coś w ten deseń.
Dodam, że bibliotekę linkuję statycznie.