如何在D中使用C静态库?

Mar*_*ine 5 linker d static-libraries

我完全不知道如何将FreeType 2.4.8编译为静态库,并且可以从我在Windows中的D应用程序中使用.我尝试用objconv,coff2omf和尝试extern(C)/ extern(System)等运行它,但似乎没有任何效果.我发现符号未找到错误,访问违规以及一堆无用的错误.

我该如何解决这个问题?我是否正确使用pragma lib链接到我的静态库,如何可靠地将COFF静态库转换为DMF/Optlink可以使用的OMF?

编辑:我尝试过的一些例子:

  1. 使用VS 2010将FreeType源编译为静态库,在我的D代码中使用pragma lib进行链接.(返回"库格式未知"类型错误)
  2. 与上面相同,但使用objconv转换为OMF格式,然后尝试与pragma lib链接.(已成功链接,但仍无法调用函数.)
  3. 编译了FreeType源代码的DLL,通过implib运行它来创建一个导入库,尝试用​​pragma lib链接.(链接成功,但由于"尝试特权功能"或"访问冲突"错误而无法调用任何功能)
  4. 我已经尝试将函数原型定义为:extern(System),extern(C)和extern(Windows).第一个和第三个修改外部函数的函数名称,使它们与静态库不匹配,第二个编译,但是在实际尝试调用函数时,我在运行时遇到访问冲突.

我能够通过动态库和符号加载来实现它,但我更喜欢在部署项目时不需要一堆外部依赖项.

And*_*vić 1

我很确定 Derelict2 有 FreeType 绑定:http://www.dsource.org/projects/derelict(请参阅 DerelictFT)。