2011-06-01 54 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中的所有符号,而无需手动列出它们。