Использование pugixml и OpenXLSX в одном проекте приводит к ошибке компоновщика.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование pugixml и OpenXLSX в одном проекте приводит к ошибке компоновщика.

Сообщение Anonymous »

У меня есть проект CMake&C++, в котором я подготовил сокращенную оболочку для pugixml. Затем эта оболочка связывается с моей библиотекой io.lib и прекрасно работает как в Ubuntu-22.04, так и в Windows-latest.
Затем я добавил Библиотека OpenXLSX позволяет читать/записывать файлы Excel *.xlsx.
Проблема (по крайней мере, я думаю, что это проблема?) заключается в том, что согласно файл readme OpenXLSX, OpenXLSX также использует pugixml. Это приводит к ошибке компоновщика на компьютере с Windows:

Код: Выделить всё

2024-05-22T09:13:31.4230545Z pugixml.lib(pugixml.obj) : error LNK2005: "private: struct pugi::xml_node_struct * __cdecl pugi::xml_text::_data(void)const " (?_data@xml_text@pugi@@AEBAPEAUxml_node_struct@2@XZ) already defined in OpenXLSX.lib(XLCellValue.obj) [D:\a\wingdesigner\wingdesigner\build\apps\wingdesigner.vcxproj]
хотя он все еще успешно компилируется в Ubuntu-22.04.
Мой корневой файл CMakeLists.txt использует CPM для включения обоих библиотеки

Код: Выделить всё

include(cmake/CPM.cmake)
CPMAddPackage("gh:troldal/OpenXLSX#ededa1e8398305d0983648d3e9f120ff7e228d2b")
CPMAddPackage("gh:zeux/pugixml@1.14")
и моя библиотека io использует оба, поэтому io/CMakeLists.txt связывает оба с целью:

Код: Выделить всё

target_link_libraries(io PUBLIC pugixml spdlog::spdlog Eigen3::Eigen OpenXLSX::OpenXLSX)
Есть ли элегантный способ решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/785 ... nker-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»