C++生成dll和调用dll以及利用CMAKE生成c++ dll的问题

这篇博客详细介绍了如何在Visual Studio中创建动态链接库(DLL),包括设置项目属性、编写头文件和源文件,并生成DLL与LIB文件。此外,还讲解了DLL的使用方法,包括将库文件拷贝到相应位置并配置项目属性。最后,通过CMake创建DLL的过程也进行了说明,涉及CMakeLists.txt的配置和项目生成。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、dll生成
1、设置项目属性:打开vs,建立空项目,在项目的  配置属性->常规->项目默认值->配置类型 修改为:动态库(.dll)
2、准备文件:填写头文件和源文件,注意头文件的声明,源文件正常。
—————————————————————————————————————
|  头文件:                                                                                                                   |
|  // __declspec详解请见https://blog.youkuaiyun.com/zhangzq86/article/details/52982939/   |
|  #define DLLEXPORT __declspec(dllexport)                                                            |                
|                                                                                                                                   |
|  extern "C"                                                                                                                 |
|  {                                                                                                                                |
|    DLLEXPORT void print_sss(string &sss);                                                              |
|  }                                                                                                                                |
—————————————————————————————————————
3. 配置管理器(如Debug\x64),生成解决方案。
4. 在相应的项目文件夹下查看.dll、.lib文件,连同头文件.h一起拷贝到容易寻找的位置。

二、dll使用
使用方法一(尽可能少地配置项目属性)
1、建立项目,完成代码编写;
2、拷贝文件,将.lib .h文件拷贝到.cpp的同级目录
3、设置项目属性,配置属性->链接器->输入->附加依赖项 中填入.lib文件完整的文件名
4、生成解决方案
5、拷贝文件,将.dll文件拷贝到.exe文件的同级目录
6、运行程序。

三、CMAKE生成动态链接库dll
1.建立空的文件和目录: 新建文件夹(主文件夹),并在其中建立main.cpp和lib文件夹,
  在lib文件夹下,准备头文件(mydll.h)和源文件(mydll.cpp),
  同时在两级文件夹下都建立Cmakelists.txt;
2.准备好mydll.h,mydll.cpp和main.cpp;
3.准备Cmakelists.txt文件:
(1)先准备lib文件下的Cmakelists.txt
===============================================
#设置目录
SET(LIBSRC ./my_dll.h ./my_dll.cpp)
SET(LIBRARY_OUTPUT_PATH  ../libdll)

# 第一个参数为你需要构建的dll的名字,第二个为类型
ADD_LIBRARY(add SHARED ${LIBSRC})
INSTALL(TARGETS add)
# 为dll设置linker
# 指定dll的生成目录,这里是:../libdll
#指定dll名称和前缀
SET_TARGET_PROPERTIES(add PROPERTIES LINKER_LANGUAGE C
        RUNTIME_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
        LIBRARY_OUTPUT_DIRECTORY ${LIBRARY_OUTPUT_PATH}
        OUTPUT_NAME "add"
        PREFIX "")
===============================================
(2)再准备主目录下的Cmakelists.txt
===============================================
cmake_minimum_required(VERSION 3.16)

#项目名称
project(run_dll)
# 版本
set(CMAKE_CXX_STANDARD 17)

# 声明引入子项目(目录)
ADD_SUBDIRECTORY(lib)

#生成可执行文件
add_executable(run_dll run_dll.cpp)
#拷贝.dll文件到.exe所在的同级目录下
execute_process( COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/libdll/Debug/add.dll ${CMAKE_CURRENT_SOURCE_DIR}/Debug)
#链接库
target_link_libraries(${PROJECT_NAME} PUBLIC  ./libdll/Debug/add)
#包含头文件
target_include_directories(${PROJECT_NAME} PUBLIC
    $<BUILD_INTERFACE:${CMAKE_SOURCE_DIR}/lib>
    $<INSTALL_INTERFACE:include>)
===============================================
4.在CMAKE中配置、生成项目文件;
5.在VS中运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值