On Thursday, 17 September 2015 at 04:58:05 UTC, WhatMeWorry wrote:

Compiling and linking was error free, but when I hit

DerelictFT.load();

my program aborts with the following run time message:

derelict.util.exception.SymbolLoadException@source\derelict\util\exception.d(35):
 Failed to load symbol FT_Reference_Face from shared library freetype.dll

This function was added to FreeType in version 2.4.2, so you will see this error when trying to load an older version.


First of all, I'm not sure if I have a valid freetype.dll file. How does one tell? I downloaded freetype-2.6 but couldn't find anything there. I downloaded freetype-2.3.5 and found a freetype6.dll which I renamed to freetype.dll because that was want an online discussion said.

DerelictFT currently requires FreeType 2.5 or later (though I've not yet looked into updating to the 2.6 API). What problem did you have with the 2.6 binary you downloaded?

Using the 2.3.5 and 2.4.2 binaries is bound to result in SymbolLoadExceptions, as any functions added in 2.5 will not be present in those binaries. You can work around this by building your own if you can't find anything precompiled online, but if you aren't using any 2.5 features, I would suggest you look into using DerelictUtil's selective symbol loading mechanism[1]. You'll need to decide a minimum version of FreeType to support, then diff the headers from that version with later releases to see which functions were added in later versions. Check for those functions in a MissingSymbolCallback and you can load without any SymbolLoadExceptions.

Also, an alternative to renaming the DLL is to pass the name directly to the loader:

Version(Windows) DerelictFT.load("freetype6.dll");
else DerelictFT.load();

[1] http://derelictorg.github.io/using/fail.html

Reply via email to