动态库
Dynamic Link Library(DLL),是windows中实现共享函数库的一种方式,它包含了一些函数和数据,能够被其他模块使用。
在使用动态库时,往往需要两个文件,是引入库(.lib)和.dll,其中引入库(.lib)是包含该dll导出的函数和变量符号名,可以认为是函数和变量的声明,在执行编译和链接可执行文件时,需要引用引入库的符号名,而DLL文件其中的函数和变量被可执行文件运行并使用后,系统采取加载相对应的DLL,并将DLL文件映射到进程的地址空间,然后访问DLL文件的导出函数,所以**DLL文件应用于程序运行时
利用CLion构建DLL文件
这边是构造C的dll,选择上面的C++ library,其余都是一样的
创建项目链接dll
在项目下创建lib目录,将所创建的.dll放入该文件夹,并在CMakeList中关联它,dl文件需要用绝对路径表示
1
2
3
4
5
6
# assign a directory
link_directories(lib)
# assign a specific link library
target_link_libraries(lesson1 PRIVATE D:\\Archive\\cpp\\lesson1\\lib\\libhelloDll.dll)
#其中的lesson1就是${PROJECT_NAME}$, 也可以用${PROJECT_NAME}代替
并需要在环境变量中添加
C++就把dll之前需要调用的函数再声明一下就好了
其中如果是C语言写的dll文件,需要加上
1
2
3
4
5
6
7
8
// the lib is set up under the C environment, so we need to convert it to the C++ first
#ifdef __cplusplus
extern "C" {
#endif
void hello();
#ifdef __cplusplus
}
#endif