C++ C++。不在CLion之外运行.dll的exe

C++ C++。不在CLion之外运行.dll的exe,c++,dll,cmake,clion,C++,Dll,Cmake,Clion,从CLion内部启动时,程序运行正常,但双击.exe拒绝运行,在我尝试运行时显示此错误: 在动态链接库C:\Users\steppers\projects\cyan\bin\libcyan\u engine.dll中找不到过程入口点\u ZNKSt7\u cxx1112basic\u stringlcSt11char\u traitslcESalcEE12find\u last\u of ePKCYY 在我看来,这就像是一个标准库的问题,或者从基本字符串位判断的问题,但我现在完全不知道 这是我的

从CLion内部启动时,程序运行正常,但双击.exe拒绝运行,在我尝试运行时显示此错误:

在动态链接库C:\Users\steppers\projects\cyan\bin\libcyan\u engine.dll中找不到过程入口点\u ZNKSt7\u cxx1112basic\u stringlcSt11char\u traitslcESalcEE12find\u last\u of ePKCYY

在我看来,这就像是一个标准库的问题,或者从基本字符串位判断的问题,但我现在完全不知道

这是我的根CMakeLists.txt:

cmake_minimum_required(VERSION 3.6)
project(cyan_test)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

add_subdirectory(engine)
include_directories(engine/include)

set(SOURCE_FILES src/main.cpp)
add_executable(cyan_test ${SOURCE_FILES})
target_link_libraries(cyan_test cyan_engine)
以及引擎子目录的:

cmake_minimum_required(VERSION 3.6)
project(cyan_engine)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_subdirectory(lib/glfw-3.2.1)
include_directories(lib/glfw-3.2.1/include)

add_definitions("-fPIC")
add_subdirectory(lib/g3log-1.2)
include_directories(lib/g3log-1.2/src)

include_directories(include)

set(SOURCE_FILES <src files here>)
add_library(cyan_engine SHARED ${SOURCE_FILES})
target_link_libraries(cyan_engine glfw g3logger)

find_package(OpenGL REQUIRED)
include_directories(${OPENGL_INCLUDE_DIR})
target_link_libraries(cyan_engine ${OPENGL_gl_LIBRARY})
cmake_最低要求(3.6版)
项目(青色引擎)
设置(CMAKE_CXX_标志“${CMAKE_CXX_标志}-std=c++11”)
添加_子目录(lib/glfw-3.2.1)
包含目录(lib/glfw-3.2.1/include)
添加定义(“-fPIC”)
添加_子目录(lib/g3log-1.2)
包括目录(lib/g3log-1.2/src)
包含目录(包含)
设置(源文件)
添加库(青色引擎共享${SOURCE\u FILES})
目标链接库(青色引擎glfw g3logger)
查找_包(需要OpenGL)
include_目录(${OPENGL_include_DIR})
目标链接库(青色引擎${OPENGL\u gl\u库})

非常感谢您的帮助。

您是否有多个exe或dll副本?从CLion运行时的当前目录可能与直接运行exe时的目录不同,这可能会导致使用过时的exe或dll。我不知道这一点。当它运行时,会显示.exe,我只需点击它。我不确定CLion是否在后台做其他事情。获得更好想法的一个方法就是监视执行情况。在成功运行时,请使用诸如Process Explorer之类的工具获取进程的exe、dll和当前目录的确切位置。当启动失败时,您可以使用Process Monitor查看使用了哪些可执行文件。一旦能够检测到差异,就应该更容易解决问题。真棒,使用process monitor查找正在使用的缺少的mingw dll。它现在工作得很好。谢谢!(如果您好奇,请使用libstdc++-6.dll)