永发信息网

C++怎么加载已经写成.so(.dll)的类

答案:1  悬赏:10  手机版
解决时间 2021-04-07 06:43
  • 提问者网友:精神病院里
  • 2021-04-06 14:20
C++怎么加载已经写成.so(.dll)的类
最佳答案
  • 五星知识达人网友:雪起风沙痕
  • 2021-04-06 15:15
1.静态调用dll
在新文件yyy.cpp里加入如下内容;
#include "xxx.h"
#pragma comment(lib,"xxx.dll")
生成的dll不需要def文件和cpp文件也可以
不包含xxx.h的话,需要把h文件内的函数原型声明添加进yyy.cpp
编译时需要加入dll,类似这样:
g++ -L. -o yyy.exe yyy.cpp xxx.dll
2.动态调用dll
首先,你需要包含windows.h
#include
你还需要一个句柄保存装入的dll文件
HINSTANCE hDll=LoadLibrary("xxx.dll");
声明所需函数的对应函数指针类型
typedef void (*pfunc)(void);
获得指向函数的函数指针
pfunc pf=(pfunc*)GetProcAddress(hDll,"example");
使用完毕后,要释放dll文件
FreeLibrary(hDll);
3.如果是so文件的话也是同样的道理,可以在工程属性里面添加好库的路径,或者编译的时候指明库。然后再在cpp中include相应的头文件:
如Linux下调用库opencv_core.so
g++ main.cpp -o test -L usr/lib/ -lopencv_core

只要路径和命名空间都写对了,就可以使用类名关键字来实例化类了。
myobj m;
m.func( );
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯