C++加载lib的方法:
方法1、直接添加lib项目的引用
方法2、在属性—连接器—输入—里添加要使用的lib,在连接器—常规—附加库目录添加lib的目录
C++加载dll的方法(参考网址
https://www.cnblogs.com/woshitianma/p/3681745.html
)
一、先介绍dll导出要使用的函数的方法。
dll中导出函数有两种方法:
1、
在函数声明中加上__declspec(dllexport)
2、采用模块定义(.def)文件声明:添加新建项—代码—模块定义文件def;def的写法:
LIBRARY "dll名称(没有后缀)"
EXPORTS
function1 @1(要导出函数名不加括号)
function2 @2
.
.
.
然后在项目属性—连接—输入—模块定义文件添加上xxx.def。
二、加载dll的方法
1、静态加载
新建项目部的配置如下:
项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件xxx.h所在的目录(也可在C/C++-常规-附加包含目录添加.h目录)
项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件xxx.lib所在的目录(也可在连接—输入—附加库目录添加.lib目录)
项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“xxx
.lib”(若有多个 lib 则以;隔开)
虽然是加载dll,但是还是要连接相应lib,lib是def文件导出的函数库。
最后,
还需要将xxx.dll(要加载的dll)复制到当前项目生成的可执行文件所在的目录(否则,运行时会出现异常,调试无法进入函数体)
。
2、动态加载
动态加载是指通过代码加载和卸载dll,主要使用3个Windows API函数:
LoadLibrary、 GetProcAddress 和FreeLibrary。这里不详细讲解,给个网址:
https://www.cnblogs.com/westsoft/p/5936092.html
如果在调用dll函数时出现“无法解析外部符号”的问题,很有可能是dll中该函数没有导出,可使用上述dll导出函数的方法解决。