Множественное определение '_Unwind_Resume' - PullRequest
1 голос
/ 09 июля 2019

Я пытался скомпилировать разделяемую библиотеку и исполняемый файл как со статически связанными libstdc ++, так и с libgcc, однако я получаю вышеуказанную ошибку компоновщика. Я видел, как люди предлагают использовать --allow-множественное определение, однако я хочу знать правильный способ решения этой проблемы. Я использую MinGW-w64 8.1.0

Я пытался использовать флаг компоновщика hacky --allow-множественное определение, однако я хочу отойти от этого и найти правильное решение.

CMakeLists.txt для библиотеки

add_library(
        engine
        SHARED
        ${vixen_HEADERS}
        ${vixen_SOURCES}
)

set_target_properties(
        engine PROPERTIES
        PREFIX ""
        OUTPUT_NAME "VixenEngine"
)

find_package(PNG REQUIRED)
find_package(GLFW REQUIRED)
find_package(Vulkan REQUIRED)

target_include_directories(
        engine PUBLIC
        ${CMAKE_CURRENT_SOURCE_DIR}/include
        ${Vulkan_INCLUDE_DIR}
        ${GLFW_INCLUDE_DIR}
        ${CMAKE_CURRENT_SOURCE_DIR}/contrib/glm/
        ${PNG_INCLUDE_DIR}
)
target_link_libraries(
        engine
        Vulkan::Vulkan
        ${GLFW_LIBRARIES}
        PNG::PNG
        -static-libstdc++
        -static-libgcc
)

CMakeLists.txt для исполняемого файла

add_executable(test main.cpp properties.rc)
target_include_directories(test PUBLIC ${CMAKE_SOURCE_DIR}/engine/include/)
target_link_libraries(test engine -static-libstdc++ -static-libgcc)

1 Ответ

1 голос
/ 10 июля 2019

Вот как я это исправил, добавьте это к своим флагам компилятора; -fno-exceptions Вы можете сделать это используя target_compile_options в CMake.

...