做的一个东西,在编译器里能成功编译运行
打开资源管理器启动exe文件缺显示dll文件缺失
CMakeLists.txt里内容如下
cmake_minimum_required(VERSION 3.17)
project(MinecraftPixelDrawTool)
set(CMAKE_CXX_STANDARD 20)
#设置头文件路径
set(INC_DIR ./include)
#设置源码路径
set(SCORE_DIR ./score)
#设置链接库路径
set(LINK_DIR ./lib)
#引入头文件
include_directories(${INC_DIR})
#引入库文件
link_directories(${LINK_DIR})
add_executable(MinecraftPixelDrawTool
${INC_DIR}/external/json/json-forwards.h
${SCORE_DIR}/main.cpp
${INC_DIR}/filePP.h
${SCORE_DIR}/file/FileStreamHosting.cpp
${SCORE_DIR}/file/tool.cpp
${INC_DIR}/bitmap.h
${SCORE_DIR}/image/bitmap/BitMapImage.cpp
${SCORE_DIR}/image/pixel.cpp
${INC_DIR}/block_pixel_draw.h
${SCORE_DIR}/pixel_draw/Block.cpp
${SCORE_DIR}/pixel_draw/PixelBlock.cpp
${INC_DIR}/json/util.h
${SCORE_DIR}/json/read.cpp
${SCORE_DIR}/json/write.cpp
${SCORE_DIR}/json/tool.cpp
)
target_link_libraries(MinecraftPixelDrawTool libjson.dll)
编译器里运行结果
直接在资源管理器运行的结果
项目结构
我觉得是路径问题,尝试把lib文件夹复制到与exe文件同一目录下也无法运行
但把lib文件夹中的dll文件放在exe文件同一目录下就可以运行了
将dll文件放在与exe文件同一目录下的lib文件夹里且能成功运行
当然是要把dll文件放到exe文件相同文件夹啊。lib只是在编译的时候需要用
如果要实现exe调用不在相同文件夹下的dll文件,要解决的是exe文件怎么知道dll文件在哪里?
你可以在系统变量里增加dll文件所在的路径,或者放到系统变量里已经注册的路径,比如system32下,否则exe无法知道所需的dll文件在哪里