1、概述
boost获取dll导出函数并调用,4个步骤。
1、包含头文件
2、加载dll
3、获取函数地址
4、调用函数
与windows 的GetProcessAdress方式相比,感觉boost更麻烦一点,于是用ai搜索了下区别,我觉得其中一个好处就是支持跨平台吧。
由于boost::dll::shared_library::get<T>("name") 是通过字符串名称查找符号的,我又想到如果dll导出函数中有2个函数名相同,参数不同,boost会怎么处理呢。
编码试了下,以C的方式导出2个函数,参数不同,代码无法编译通过;
这也说的通,"C链接不允许重载,C 语言的符号系统不包含参数信息,无法区分同名函数,因此在 extern "C" 块中定义多个同名函数会导致符号冲突,编译失败。"
2、boost获取dll导出函数并调用代码示例
#include <iostream> #include "boost/dll.hpp" // 包含dll 头文件 #include "dll_fuc.h" using namespace std; int main() { // 调用示例 // boost访问dll导出函数 try { //