“ _Unwind_Resume”的

时间:2019-07-09 13:45:25

标签: c++ gcc cmake c++17 mingw-w64

我一直在尝试使用静态链接的libstdc ++和libgcc编译共享库和可执行文件,但是出现上述链接器错误。我见过有人建议使用--allow-multiple-definition,但是我想知道解决此问题的正确方法。我正在使用MinGW-w64 8.1.0

我曾尝试使用hacky --allow-multiple-definition链接器标记,但是我想摆脱这一点并获得适当的解决方案。

该库的

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 个答案:

答案 0 :(得分:1)

这是我修复它的方法,将其添加到您的编译器标志中; -fno-exceptions 您可以在CMake中使用target_compile_options来完成此操作。