我想在C#項目中使用FreeType。我發現這個binding,但我仍然需要一個freetype.dll。我通常在我的C++項目中使用靜態庫,所以我從來沒有編譯過一個。打開freetype解決方案(VS2010)我注意到,沒有配置動態庫 - 只是靜態的。我試圖做我自己的配置,並得到它來生成一個freetype.dll。如果我使用它與c#綁定我得到一個異常,找不到FT_Init_FreeType入口點。任何想法如何我必須調整freetype-project來導出這些函數?將FreeType編譯爲DLL(與靜態庫相反)
14
A
回答
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 Type
到Dynamic Library (.dll)
打開
ftoption.h
文件,並添加這些行(附近的「DLL導出彙編」爲例說明部分):#define FT_EXPORT(x) __declspec(dllexport) x #define FT_BASE(x) __declspec(dllexport) x
將項目編譯配置更改爲「發佈」。
編譯該項目。您現在應該在
objs\win32\vc2010
目錄中有一個freetype246.dll
。
1
我會打賭,問題是,你的DLL項目不導出任何符號,所以當所有的代碼是有符號的地址不在出口表,所以沒有人可以得到從外面給他們。
This question有一個不錯的解決方案,導出.dll中的所有符號,而無需手動列出它們。
相關問題
- 1. 在Windows上將FreeType 2.6.3編譯爲.dll
- 2. 編譯一個C++庫作爲一個靜態庫和動態DLL與VS
- 3. 如何將Haskell編譯爲靜態庫?
- 4. 將mono編譯爲靜態庫
- 5. 編譯PHP錯誤與freetype
- 6. QT靜態庫靜態編譯
- 7. 交叉編譯freetype爲Android
- 8. 爲iPhone SDK(XCode)編譯Freetype
- 9. 用預編譯的靜態庫編譯
- 10. 如何將nana編譯成靜態庫
- 11. dotPeek反編譯DLL
- 12. .dll反編譯器
- 13. iOS:編譯靜態庫
- 14. 靜態庫中斷編譯
- 15. 無法爲archvv7編譯靜態庫
- 16. Makefile C++ 11 - 編譯爲靜態庫
- 17. 如何將Qt編譯爲靜態
- 18. 如何在編譯DLL到靜態庫時處理DLL_EXPORT?
- 19. 編譯和反編譯dll文件
- 20. 使用Visual C++ 6編譯器而不是動態庫(DLL)創建靜態庫
- 21. Visual Studio靜態庫編譯器硬編碼相對路徑
- 22. 爲ASP反編譯DLL文件
- 23. 將C++代碼編譯爲靜態庫(.a)
- 24. 將Boost編譯爲靜態通用二進制庫
- 25. 任何方式將firebreath編譯爲靜態庫?
- 26. 反編譯文件.dll
- 27. 如何反編譯C++ dll?
- 28. 編譯靜態庫內的靜態庫 - 問題
- 29. 將靜態庫鏈接到一個DLL
- 30. CMake項目編譯罰款SHARED庫,但不與靜態庫
這些二進制文件是從2008年3月9日(版本2.3.5 ...)當前版本是2.4.6 ... – Titusz 2011-09-13 12:29:23
@Titusz - 好點。我已經更新了我的答案。然而,如果你是一個downvoter,那麼確保這個問題是完整的就好了,所以我們在回答之前知道整個故事。 – 2011-09-13 13:33:44
這工作完美...非常感謝你...賞金很好賺;) – Titusz 2011-09-15 09:40:42