嗨,所以我使用MSVS ++ 2010,並一直試圖設置SFML整天...... 我從網站下載1.6,然後在VS2010中重建它,但很難找到這沒有導致一個sfml-system-d.lib文件,這是我習慣使用的,並且只產生了新的系統和系統sd庫。SFML教程1:線程問題
然後我密切關注着這個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 ::線程線程();」彈出一個錯誤框,說「無法啓動程序」,「配置不正確」,「查看清單文件的可能錯誤」,「重新安裝我的修復程序」。
另外:試圖運行有關線程教程的第一個程序時:
#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個unresovled外部符號:
1>sfml-system-s-d.lib(Thread.obj) : error LNK2001: unresolved external symbol "__declspec(dllimport) public: int __thiscall std::ios_base::width(int)" ([email protected][email protected]@@[email protected])
fatal error LNK1120: 8 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
最後這是怎麼了我的項目設置:
- 包括開箱即用的目錄,新下載的SFML 1.6/incl ude
- lib目錄到VS2010重建SFML(調試/發佈DLL設置和靜態)。
- 對sfml-system-s-d.lib文件的額外依賴。
- 出frusteration的,我把每一個dll文件旁邊的.exe
所以我需要做的就是改變依賴關係? would'nt我也需要一些DLL文件? – Griffin 2011-06-08 01:01:31
我是否需要更改每個項目(主,音頻,圖形)中的依賴關係,並且每次我切換fom時都會說調試DLL爲調試靜態 – Griffin 2011-06-08 01:01:37
對不起,失去了一段時間的網絡(相當意外)。 更改依賴性應該是所有必需的,是的,每個項目配置(調試DLL,調試靜態,發佈DLL,發佈靜態)都需要重新配置。 如果您使用靜態構建路由(即構建Debug Static或Release Static),則不需要除openal32或libsndfile以外的任何其他DLL(如果這就是您的意思),並且除了內容之外,您不需要任何其他任何DLL要發佈的源代碼分發。 – aws 2011-06-11 06:08:22