Ultimaker / libArcus

Communication library between internal components for Ultimaker software

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

undefined reference to google::protobuf

Miller-Xie opened this issue · comments

Hello, I am building Cura's build environment, but when I compile libArcus on Windows 7 virtual machine, I met the program link error. In the following section is the specific error message. On this basis, I have installed protobuf and also add it to environment variable.

C:\Cura262LiXianBianYiBao\Build260\libArcus-2.6\libArcus\build>mingw32-make
Scanning dependencies of target Arcus
[ 16%] Building CXX object CMakeFiles/Arcus.dir/src/Socket.cpp.obj
[ 33%] Linking CXX shared library libArcus.dll
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2a3): undefin
ed reference to `google::protobuf::MessageLite::SerializeAsString[abi:cxx11]() c
onst'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2a25): undefi
ned reference to `google::protobuf::io::ArrayInputStream::ArrayInputStream(void
const*, int, int)'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2a9f): undefi
ned reference to `google::protobuf::io::CodedInputStream::Refresh()'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2ab2): undefi
ned reference to `google::protobuf::io::CodedInputStream::SetTotalBytesLimit(int
, int)'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2abf): undefi
ned reference to `google::protobuf::MessageLite::ParseFromCodedStream(google::pr
otobuf::io::CodedInputStream*)'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2b5a): undefi
ned reference to `google::protobuf::io::CodedInputStream::~CodedInputStream()'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2b62): undefi
ned reference to `google::protobuf::io::ArrayInputStream::~ArrayInputStream()'
CMakeFiles\Arcus.dir/objects.a(Socket.cpp.obj):Socket.cpp:(.text+0x2e04): undefi
ned reference to `google::protobuf::io::CodedInputStream::~CodedInputStream()'

This problem has been bothering me for a few days. If there is time, please give me some solutions.

Thank you!!!

Did you compile libArcus using the same compiler as Protobuf was compiled with?

Did you compile libArcus using the same compiler as Protobuf was compiled with?

Yes, I used the same compiler mingw-64 to compile protobuf and libArcus.

Hmm, then maybe it's an issue with the version of Protobuf you're using? I really have no idea what could cause this (or how to fix it). Sometimes a clean-and-rebuild also works.