嗨所以我正在使用 msVS++2010 并且整天都在尝试设置 SFML.... 我从网站下载了 1.6,然后在 VS2010 中重建它,但遗憾地发现这并没有导致 sfml 系统-d.lib 文件,这是我习惯使用的,并且只生成了新的 system-s 和 system-sd 库。
然后我仔细观看了这个视频,发现他通过添加 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-sd.lib 文件的额外依赖。
- 出于沮丧,我将每个 dll 文件放在 .exe 旁边