Windows linking errors after removing old Graphite code
khaledhosny at eglug.org
Sat Nov 26 14:39:13 UTC 2016
On Fri, Nov 25, 2016 at 05:12:03PM +0100, Michael Stahl wrote:
> On 24.11.2016 22:04, Khaled Hosny wrote:
> > I’m getting linking after removing the old Graphite integration:
> > https://gerrit.libreoffice.org/#/c/31143/
> > But I’m getting unexpected linking errors, complaining about almost all
> > Graphite symbol used by HarfBuzz:
> > libharfbuzz.lib(libharfbuzz_la-hb-graphite2.obj) : error LNK2019: unresolved external symbol __imp__gr_make_face referenced in function __hb_graphite2_shaper_face_data_create
> > Full build:
> > http://ci.libreoffice.org/job/lo_gerrit/3105/Config=linux_clang_dbgutil_64/console
> > My experience with of Windows toolchain is rather primitive, so I’m lost
> > here. I’m guessing that because Graphite is statically linked, after
> > removing the old code the linker does not see the use of these symbols
> > and drops them or something like that. But I’m not sure if I’m guessing
> > right or how to fix this.
> i suspect it's because you remove this file:
> presumably it was included before graphite headers previously, and would
> suppress a __declspec(dllimport) from the graphite headers, so now you
> get unresolved dllimport symbols like "__imp__gr_make_face referenced"
> ... actually no, this is implausible since the unresolved symbols aren't
> in vcl objects but in the harfbuzz static library.
> ... figured it out now, should be fixed with commit
> 086631af59636cd9a6a45b747a1bc59b4b547794, no idea why this doesn't fail
> on current master already.
Thanks, this fixed the build indeed. I guess since HarfBuzz is
statically linked and the symbols were available because of the old code
was including graphite_static.hxx things just worked by accident since
the linking happens in vcl not harfbuzz module (not that I know anything
about how linkers work), I guess it would have been broken if one tried
to build with --disable-graphite.
More information about the LibreOffice