我正在做大學的任務,我可以通過我的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,正如我在原始文章中提到的那樣。 –