【发布时间】:2013-12-06 03:20:19
【问题描述】:
我正在制作自己的游戏库,它使用 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能够使用另一个库的步骤,但是我没有找到相关的线程(可能我使用了错误的关键字......)
【问题讨论】:
标签: c++ dll visual-studio-2013 sfml