2011-06-01 55 views
14

我想在C#項目中使用FreeType。我發現這個binding,但我仍然需要一個freetype.dll。我通常在我的C++項目中使用靜態庫,所以我從來沒有編譯過一個。打開freetype解決方案(VS2010)我注意到,沒有配置動態庫 - 只是靜態的。我試圖做我自己的配置,並得到它來生成一個freetype.dll。如果我使用它與c#綁定我得到一個異常,找不到FT_Init_FreeType入口點。任何想法如何我必須調整freetype-project來導出這些函數?將FreeType編譯爲DLL(與靜態庫相反)

回答

35

如果您確定舊版本(2008年3月),您可以訪問FreeType for Windows頁面,下載最新的Binaries軟件包,打開.ZIP並從bin目錄中提取FreeType6.dll。只需適當地重命名它。

如果你需要一個較新的版本,這裏是你如何編譯最新:從http://sourceforge.net/projects/freetype/files/freetype2/

  • 打開Visual Studio,

    • 下載最新的源代碼(2.4.6截至今日)並從builds\win32\vc2010目錄加載freetype.sln

    • 打開項目的配置,並在General選項卡,更改Configuration TypeDynamic Library (.dll)

    • 打開ftoption.h文件,並添加這些行(附近的「DLL導出彙編」爲例說明部分):

      #define FT_EXPORT(x) __declspec(dllexport) x 
      #define FT_BASE(x) __declspec(dllexport) x 
      
    • 將項目編譯配置更改爲「發佈」。

    • 編譯該項目。您現在應該在objs\win32\vc2010目錄中有一個freetype246.dll

  • +0

    這些二進制文件是從2008年3月9日(版本2.3.5 ...)當前版本是2.4.6 ... – Titusz 2011-09-13 12:29:23

    +0

    @Titusz - 好點。我已經更新了我的答案。然而,如果你是一個downvoter,那麼確保這個問題是完整的就好了,所以我們在回答之前知道整個故事。 – 2011-09-13 13:33:44

    +0

    這工作完美...非常感謝你...賞金很好賺;) – Titusz 2011-09-15 09:40:42

    1

    我會打賭,問題是,你的DLL項目不導出任何符號,所以當所有的代碼是有符號的地址不在出口表,所以沒有人可以得到從外面給他們。

    This question有一個不錯的解決方案,導出.dll中的所有符號,而無需手動列出它們。