【发布时间】:2017-03-07 10:16:21
【问题描述】:
我正在为大学做作业,我可以通过我的 IDE (CLion) 很好地运行我的程序并让它运行。但是,当我尝试在同一台机器上手动运行构建的可执行文件时,出现以下错误:
长字符串:“_ZNSt7__cxx1112basic_stringlcSt11char_traitslcESalcEE10_M_replaceEjjPKcj”
我在 Windows 10 上使用 MinGW32 和 GCC/G++ 版本 5.3.0 构建。我使用的从源代码编译的库是 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。
标签: c++ gcc g++ mingw libstdc++