我完全不知道如何将FreeType 2.4.8编译为静态库,并且可以从我在Windows中的D应用程序中使用。我尝试使用objconv,coff2omf和尝试extern(C)
/ extern(System)
等来运行它,但似乎没有任何效果。我发现符号未找到错误,访问违规以及一堆无用的错误。
我该如何解决这个问题?我是否正确使用pragma lib
链接到我的静态库,以及如何可靠地将COFF静态库转换为DMF / Optlink可以使用的OMF?
编辑:我尝试过的一些例子:
我能够通过动态库和符号加载来实现它,但我更喜欢在部署项目时不需要一堆外部依赖项。
答案 0 :(得分:1)
我很确定Derelict2有FreeType绑定:http://www.dsource.org/projects/derelict(参见DerelictFT)。
答案 1 :(得分:-1)
是的,你的.d文件中需要extern(System)和FT函数声明。
静态库是对象文件的集合。所以不需要任何类型的转换(omf2coff等)。 DMD接受静态库作为参数,因此简单的dmd file1.d file2.d C:/path/to/freetype.lib
应该可以工作。
我错了。显然我需要阅读一些关于COFF2OMF的文档。 引用: Microsoft COFF格式显然已随Visual C ++ 6.0更改。要在具有较新格式的.lib文件上使用coff2omf,请使用Microsoft的链接器将文件转换为较早的COFF格式:
link /lib /convert freetype.lib
因此,根据上述陈述判断,您需要执行两个步骤。
首先使用Microsoft的链接器将您使用VisualStudio制作的静态库(COFF格式)转换为旧 COFF格式,如上所述。
现在执行coff2omf freetype.lib
将静态库转换为OMF格式。
现在应该可以按照我在帖子中描述的方式与DMD一起使用了。