【发布时间】:2011-09-09 18:09:19
【问题描述】:
您好,我正在使用 msVS++2010,并且整天都在尝试设置 SFML.... 我从该站点下载了 1.6,然后在 VS2010 中对其进行了重建,但遗憾地发现这并没有生成我习惯使用的 sfml-system-d.lib 文件,并且只生成了新的 system-s 和system-sd 库。
然后我仔细观察了这个Video,发现他通过添加 sfml-system-sd 的外部库来运行他的测试代码,所以我在 .exe 旁边添加了 sfml-system-d.dll 并得到以下信息与视频显示的代码完全相同:
#include <iostream>
#include <SFML/System.hpp>
int main(int argc, char **argv)
{
sf::Clock clock;
sf::Sleep(0.1f);
while(clock.GetElapsedTime() < 5.0f)
{
std::cout << clock.GetElapsedTime() << std::endl;
sf::Sleep(0.5f);
}
}
显然时钟和睡眠都在工作,但是当我添加简单的代码行'sf::Thread thread();'弹出一个错误框,显示“无法启动程序”、“配置不正确”、“查看清单文件是否存在可能的错误”、“正在重新安装我的修复程序。”
另外:当尝试运行关于线程的教程的第一个程序时:
#include <SFML/System.hpp>
#include <iostream>
void ThreadFunction(void* UserData)
{
// Print something...
for (int i = 0; i < 10; ++i)
std::cout << "I'm the thread number 1" << std::endl;
}
int main()
{
// Create a thread with our function
sf::Thread Thread(&ThreadFunction);
// Start it !
Thread.Launch();
// Print something...
for (int i = 0; i < 10; ++i)
std::cout << "I'm the main thread" << std::endl;
return EXIT_SUCCESS;
}
我得到了 8 个像这样的未解决的外部符号:
1>sfml-system-s-d.lib(Thread.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::ios_base::width(int)" (__imp_?width@ios_base@std@@QAEHH@Z)
fatal error LNK1120: 8 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
最后我的项目是这样设置的:
- 包含开箱即用的目录,新下载的 SFML 1.6/include
- lib 目录到 VS2010 重建的 SFML(调试/发布 DLL 设置,和静态)。
- 对 sfml-system-s-d.lib 文件的额外依赖。
- 出于沮丧,我将每个 dll 文件都放在了 .exe 旁边
【问题讨论】:
标签: multithreading sfml