Ultimaker / libArcus

Communication library between internal components for Ultimaker software
GNU Lesser General Public License v3.0
76 stars 81 forks source link

undefined reference to google::protobuf #96

Open Miller-Xie opened 5 years ago

Miller-Xie commented 5 years ago

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!!!

Ghostkeeper commented 5 years ago

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

Miller-Xie commented 5 years ago

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.

Ghostkeeper commented 5 years ago

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.