2010-08-01 55 views
0

我使用Visual Studio 2010 Express在C++ + SFML中編寫了一個遊戲。我打包了像msvcr100.dll,opengl32.dll等所有庫,但一些人可以運行我的遊戲,而其他人不能:/我不知道爲什麼,因爲我添加了運行遊戲所需的所有東西。無法運行遊戲的人會看到以下消息:「程序入口點_ftol2無法位於動態鏈接庫msvcrt.dll中」我的程序無法在朋友的機器上工作

如何讓此遊戲在所有機器上運行?

+1

請添加確切的錯誤消息。這也有助於澄清你如何「將所有圖書館打包」到你的遊戲中。 – 2010-08-01 22:25:01

回答

1

看來你的朋友沒有像你一樣的msvcrt.dll。他們應該安裝具有所有庫的VC 2010可再發行組件包,或者可以將您的遊戲與標準運行時庫靜態鏈接。

你可以得到再發行組件包here (x86 version)

+0

但我將這些DLL添加到包 – gamer43 2010-08-01 22:29:20

+0

您可以像我說的那樣靜態鏈接庫。這樣所需的功能將被鏈接到exe文件中。 – Jaka 2010-08-01 22:38:00

6

請不要複製的DLL。使用Visual Studio 2010 Redistributable Package。如果你想使這個更簡單,使用一些工具可以讓你做一個安裝項目。 Visual Studio Professional有一個簡單易用的安裝嚮導創建器。

+0

但是,如果我的朋友不太瞭解計算機,並且不想安裝Visual Studio 2010 Redistributable Package,他只想從我下載包並運行遊戲,我該怎麼辦? – gamer43 2010-08-01 22:33:02

+1

然後你應該爲他做一個安裝程序。 Microsoft爲VS2010運行時提供了一個Windows Installer合併模塊,該模塊可以集成到也包含您的遊戲的基於MSI的安裝程序中。 – 2010-08-01 22:35:23

+2

您可以隨時鏈接到C++庫。轉到項目>屬性...> C/C++>代碼生成並將運行時庫的值更改爲「多線程(/ MT)」。這樣就不需要安裝任何可再分發程序。 – user353297 2010-08-01 22:50:07

1

請修改您的帖子以包含REAL錯誤信息 - 否則,人們將開始猜測遊戲,並且無法爲您提供與您的帖子中包含所有必要信息一樣好的答案。

錯誤消息可能是

「過程入口點_ftol2 不能設在動態 鏈接庫MSVCRT.DLL」

...這很可能意味着你提供了msvcrt.dll的錯誤版本,並且可以運行應用程序的人偶然安裝了正確的版本。爲了解決這個問題,提供正確的版本。

0

我發現問題,我把我的opengl32.dll加到這個包中。我認爲opengl32.dll在一些系統上工作不同,所以當我刪除這個庫時,每個人都可以運行我的程序

相關問題