Link against static ignition library and static protobuf

Did you add your library to the ProjectName.Build.cs file?

PublicAdditionalLibraries.Add(<path to the library>);

Hello,
I am working on integrating ignition-robotics library into Unreal to use its transport system.

I built protobuf as static library and linked static ignition against it and that worked and now I have my “*.a” files.

Now, I included those libraries in my project as ThirdParty static libs and tried to load the Unreal editor solution, there it throws me the following error :

[2018.08.15-16.42.46:949][
0]LogLinux: Warning: dlopen failed:
/home/user/Documents/Unreal
Projects/IgnIntegrationPoc_4.19/Binaries/Linux/libUE4Editor-IgnIntegrationPoc.so:
undefined symbol:
_ZN6google8protobuf8internal26fixed_address_empty_stringE

tracing back that error, i found the following :

$ nm -D Binaries/Linux/libUE4Editor-IgnIntegrationPoc.so | grep
_ZN6google8protobuf8internal26fixed_address_empty_stringE

U _ZN6google8protobuf8internal26fixed_address_empty_stringE

I tried the same with all the static libraries that I included, I never found this symbol in any of them. Tried different versions of protobuf (3.6.1) and (3.0.2) with different options “-fPIC -DGOOGLE_PROTOBUF_NO_RTTI -frandom-seed=string” and nothing changed. Still the same loading problem …

Does anyone have an idea where this undefined symbol is coming from ?

Good to know, _ZN6google8protobuf8internal26fixed_address_empty_stringE the only undefined symbol that I found on my shared library “libUE4Editor-IgnIntegrationPoc.so”. Curious ! …

Cheers.

Yep. And Indeed, all the others google protobuf symbols are defined in the .so but that one.

don’t know if that helps but hope so :slight_smile:

Thx Eki but that didn’t work. It complans that the resulting lib is mal formed…