我们正在将相当大的代码库从Ubuntu 14.04迁移到16.04。我们的库有一些链接问题,我们通过重新编译所有的Dependencies解决了这些问题,但是有一个库引起了我的麻烦:步骤代码。
在重新编译此代码之前,我收到以下错误消息:
[ 99%] Building CXX object ToolKitApp/CMakeFiles/ToolKitApp.dir/ToolKitApp_automoc.cpp.o
[ 99%] Linking CXX executable ToolKitApp
../Importer/libImporter.so: undefined reference to `STEPfile::STEPfile(Registry&, InstMgr&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)'
../Importer/libImporter.so: undefined reference to `STEPfile::ReadExchangeFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool)'
collect2: error: ld returned 1 exit status
make[2]: *** [ToolKitApp/ToolKitApp] Error 1
make[1]: *** [ToolKitApp/CMakeFiles/ToolKitApp.dir/all] Error 2
make: *** [all] Error 2
ToolKitApp/CMakeFiles/ToolKitApp.dir/build.make:953: recipe for target 'ToolKitApp/ToolKitApp' failed
CMakeFiles/Makefile2:463: recipe for target 'ToolKitApp/CMakeFiles/ToolKitApp.dir/all' failed
Makefile:127: recipe for target 'all' failed
未定义的引用对应于步骤代码库中的文件stepfile.h
所以我尝试重新编译它,但随后收到此消息:
[ 77%] Building CXX object Importer/CMakeFiles/Importer.dir/Parser/CartesianPointEntity.cpp.o
[ 77%] Building CXX object Importer/CMakeFiles/Importer.dir/Parser/EntityFactory.cpp.o
In file included from /usr/include/c++/5/cstddef:45:0,
from /usr/include/eigen3/Eigen/Core:221,
from /usr/include/eigen3/Eigen/Geometry:11,
from /home/onilsson/DevRoot/src/Importer/../Core/EigenExtensions/EigenGeometryAndPlugins.h:10,
from /home/onilsson/DevRoot/src/Importer/Parser/../ArrayTypesDefines.h:3,
from /home/onilsson/DevRoot/src/Importer/Parser/STEPCodeParser.h:11,
from /home/onilsson/DevRoot/src/Importer/Parser/EntityFactory.h:2,
from /home/onilsson/DevRoot/src/Importer/Parser/EntityFactory.cpp:1:
/usr/lib/gcc/x86_64-linux-gnu/5/include/stddef.h:436:38: error: expected unqualified-id before ‘;’ token
typedef decltype(nullptr) nullptr_t;
^
Importer/CMakeFiles/Importer.dir/build.make:494: recipe for target 'Importer/CMakeFiles/Importer.dir/Parser/EntityFactory.cpp.o' failed
make[2]: *** [Importer/CMakeFiles/Importer.dir/Parser/EntityFactory.cpp.o] Error 1
CMakeFiles/Makefile2:550: recipe for target 'Importer/CMakeFiles/Importer.dir/all' failed
Makefile:127: recipe for target 'all' failed
make[1]: *** [Importer/CMakeFiles/Importer.dir/all] Error 2
make: *** [all] Error 2
现在该错误似乎与步骤代码库没有任何关系(STEPCodeParser是项目中的文件),但是在重新编译步骤代码之前,我在编译时没有任何错误。
我尝试检查stepcode是否具有与引起问题的标题同名的标头,但事实并非如此,所以我不明白重新编译stepcode是如何突然导致此问题的。
有人知道发生了什么吗?
注意:我正在使用Qt5库,发现它具有stddef.h标头。我不知道为什么这里会突然发生冲突,但这也许是原因的一部分?