尝试链接库,编译器无法找到类型的大小或第一次引用它们时程序崩溃

问题描述

我一直在尝试在我的学校项目中使用 OpenXLSX,为此我正在为其创建一个柯南包(与项目的其余部分保持一致并确保它在我教授的机器上运行)。一切都构建得很好,包括演示,并且我已经毫无问题地运行了单元测试(除了几个似乎,我认为当它测试 WinZip 功能时,这是有道理的,因为我正在一个 ubuntu:latest 容器中构建它[20.04 我认为])。但是,当我尝试使用该库时,我包含了 OpenXLSX 标头并收到此错误

In file included from /usr/include/c++/9/memory:80,from /root/.conan/data/openxlsx/0.2.0/build/openxlsx/package/b911f48570f9bb2902d9e83b2b9ebf9d376c8c56/include/headers/XLCellValue.hpp:54,from /root/.conan/data/openxlsx/0.2.0/build/openxlsx/package/b911f48570f9bb2902d9e83b2b9ebf9d376c8c56/include/headers/XLCell.hpp:56,from /root/.conan/data/openxlsx/0.2.0/build/openxlsx/package/b911f48570f9bb2902d9e83b2b9ebf9d376c8c56/include/OpenXLSX.hpp:49,from /project/Source/ExcelData.hpp:4,from /project/Source/ExcelData.cpp:1:
/usr/include/c++/9/bits/unique_ptr.h: In instantiation of 'void std::default_delete<_Tp>::operator()(_TP*) const [with _Tp = pugi::xml_node]':
/usr/include/c++/9/bits/unique_ptr.h:292:17:   required from 'std::unique_ptr<_Tp,_Dp>::~unique_ptr() [with _Tp = pugi::xml_node; _Dp = std::default_delete<pugi::xml_node>]'
/root/.conan/data/openxlsx/0.2.0/build/openxlsx/package/b911f48570f9bb2902d9e83b2b9ebf9d376c8c56/include/headers/XLCellRange.hpp:102:9:   required from here
/usr/include/c++/9/bits/unique_ptr.h:79:16: error: invalid application of 'sizeof' to incomplete type 'pugi::xml_node'
   79 |  static_assert(sizeof(_Tp)>0,|                ^~~~~~~~~~~
In file included from /usr/include/c++/9/memory:80,|                ^~~~~~~~~~~
make[2]: *** [CMakeFiles/server.dir/build.make:115: CMakeFiles/server.dir/Source/ExcelData.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/tests.dir/build.make:115: CMakeFiles/tests.dir/Source/ExcelData.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:105: CMakeFiles/server.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/tests.dir/all] Error 2
make: *** [Makefile:84: all] Error 2

似乎找不到编译器找不到pugi类型的大小。我查看了 XLXmlParser.hpp,它似乎利用了 SFINAE 并且不包含 PUGIXML 标头。

我尝试手动插入它(通过柯南脚本),但没有成功。

然后我尝试在我的程序中包含 PUGI XML 标头,我遇到了同样的错误,直到我将标头放在 OpenXLSX.hpp 标头之后。它编译但在第一次引用 PUGI XML 中的任何内容时出现段错误在这种情况下,在 isOpen XLZipArchive 中,我认为在打开 Excel 文档时会调用它)。我查看了示例的 CMakeLists.txt 文件,我发现已经创建了编译时定义,因此我尝试 target_compile_deFinitions(Demo1 PRIVATE OPENXLSX_STATIC_DEFINE) 我尝试添加它,但似乎没有效果我有点不知所措。

感谢阅读!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)