2013-04-17 45 views
3

我讀了這個guide,它引導您完成使用Cairo和Visual C++創建「可視化」應用程序所需的步驟。本指南建議您下載某些dll文件並將它們存儲在創建可執行文件的目錄中(調試)。 這裏是文件無指的是在他的教程的列表:何處放置以及如何在C++項目中包含dll文件?

  • 開羅的二進制文件(是的,你需要的二進制包過,因爲開發一個不包含DLL) - > libcairo-2。 dll的
  • zlib的二進制文件 - > zlib1.dll
  • libpng的二進制文件 - > libpng12-0.dll
  • Freetype的二進制文件 - > freetype6.dll
  • fontconfig的二進制文件 - > libfontconfig-1.DLL
  • 外籍二進制 - > libexpat-1.dll

正如你所看到的,它有很多文件。我一直在想這是否是這樣做的「正確」方式?在這種情況下是否有另一種被認爲是「最佳做法」的方式?

+0

該指南是正確的,指出應該將DLL放在與使用它們的應用程序相同的目錄中。它們不是系統DLL的,不屬於'/ windows'或'/ windows/systemXX' –

回答

6

這種方法沒有任何問題,它可能是讓應用程序啓動並運行的最快方法。您的應用程序需要這些庫,因此將它們放在同一個文件夾中可以找到它們。

當然總是有替代品!

靜態鏈接

爲了避免一大堆的與您的應用程序存在的DLL,您可以使用靜態鏈接。鏈接時鏈接.lib文件,而不是在運行時鏈接到.dll文件。使您的.exe更大,但意味着您可能能夠分發單個文件。

在不同的文件夾

這些DLL不必在同一文件夾中的.exe,但通常最有意義配售的DLL。 Windows在運行時查找.dll時會搜索多個文件夾,因此您可以將dll放在當前目錄,系統目錄(絕對不推薦)或環境變量PATH中的其他目錄中。其實沒有推薦這些地點!將它們放在與.exe相同的文件夾中是最安全的,因爲通常您可以控制該文件夾。

for Windows如何搜索一個.dll的具體規則,羅列如下:http://msdn.microsoft.com/en-ca/library/windows/desktop/ms682586(v=vs.85).aspx

自定義生成步驟

我不喜歡手動檔把我的調試或發佈文件夾。我喜歡將debug文件夾視爲隨時可以刪除和重建的東西,而且我喜歡一步一步的構建過程,將所有需要的東西放在一起,這樣我就可以輕鬆地在任何機器上構建。所以我通常會創建一個自定義構建步驟,將所需的.dll從「源」文件夾(在源代碼管理中)複製到我的輸出文件夾中。

相關問題