Я делаю свою собственную библиотеку игр, которая использует SFML с VS2013. Я хочу повторно использовать код, установив библиотеку как DLL. Однако у меня возникают проблемы при использовании моей собственной DLL.
Вот подробное описание моей ситуации:
Вот часть кода в игровом цикле, где
window
— этоsf::RenderWindow
, аrect
— это объект, определенный в моей DLL, который просто представляет собойsf::RectangleShape
с определенными свойствами (маленький синий прямоугольник в точке (0,0)).window.clear(sf::Color::White); window.draw(rect); window.display();
Однако после
window.draw(rect)
весь экран станет черным, даже несмотря на то, что приведенное выше утверждение должно очистить его как белый, аrect
занимает лишь небольшое место в верхнем левом углу.С моим классом не должно быть проблем, так как если я вставлю объявление и определение класса непосредственно в основной исходный файл (конечно, удалив такие вещи, как
__declspec(dllexport)
), все будет работать хорошо.Все функции в моей DLL, которые не используют SFML, работают корректно при загрузке из DLL.
SFML статически компонуется как в проекте DLL, так и в проекте, который его использует.
Я просмотрел и следил за MSDN, чтобы настроить свои проекты.
Итак, как это исправить? Я предполагаю, что проблема должна заключаться в том, что я пропустил некоторые шаги, которые позволяют DLL использовать другую библиотеку, но я не нашел соответствующих тем (возможно, я использовал неправильные ключевые слова...)