我正在做大学的任务,我可以通过我的IDE(CLion)很好地运行我的程序并使其工作。然而,当我试图在同一台机器我碰到下面的错误上手动运行生成的可执行文件:C++ MinGW链接器错误_ZNSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE10_M_replaceEjjPKcj
长字符串:“_ZNSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE10_M_replaceEjjPKcj”
我使用MINGW32与海湾合作委员会建立/ G ++版本5.3.0在Windows 10上。我从源代码编译的库是GLEW 2.0和GLFW 3.2.1。我也使用stb_image。
我的代码正在为C++ 14标准构建。我不能为我的生活弄清楚是什么导致了这个错误。
我的CMakeLists.txt:
cmake_minimum_required(VERSION 3.6)
project(FlightSim)
#Set C++ standard to C++14
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
#Set project directory variables
set(SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(RESOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources")
set(INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/includes")
set(LIBRARY_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib")
#Include library headers
include_directories("${INCLUDE_DIR}")
#Add source files
file(GLOB_RECURSE SOURCE_FILES "${SOURCE_DIR}/*.cpp")
add_executable(FlightSim ${SOURCE_FILES})
#Add static definition for GLEW
add_definitions(-DGLEW_STATIC)
#Link libraries
target_link_libraries(
FlightSim
"${LIBRARY_DIR}/libglew32.a"
"${LIBRARY_DIR}/libglfw3.a"
# "${LIBRARY_DIR}/libSOIL.a"
opengl32.lib
)
你是否静态链接到这些库?如果是这样的话,我会非常小心。这个问题的一个普遍原因是,某些库是使用与您正在使用的版本不同的Visual Studio版本编译的(因为您使用的是MinGW)。你能证实这种情况吗?您可以尝试通过链接到共享库来解决此问题。 –
@TheQuantumPhysicist我正在静态地链接到库,据我所知。但是,它们是使用MinGW编译器从源代码编译到自己的机器上的,而不是使用Visual Studio编译的。我在这个项目中也没有使用Visual Studio,正如我在原始文章中提到的那样。 –