永发信息网

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

答案:1  悬赏:10  手机版
解决时间 2021-04-07 06:43
C++怎么加载已经写成.so(.dll)的类
最佳答案
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( );
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
wifi信号放大器哪有卖的?
ps素材制作
who is 什么here,s开头
某日,在一僻静水塘里有十几只青蛙,其中一只
《鹿柴》和《逢雪宿芙蓉山主人》这两首诗有哪
当铁路乘务员都有什么要求? 身高要求吗? 还
河南省农村信用社上蔡县农村信用合作联社黄埠
开路测试和短路测试都是正常的,但500伏的摇表
重庆鼎尚老火锅地址在哪,我要去那里办事
runningman rain是哪一期
离刘家窑最近的工商银行
甜味紫苏叶怎么制作
09款华晨宝马520li排放标准是国几?
我要几个为爱情执着追求的名人例子
什么是行政单位的资产
推荐资讯
pixlr怎么P这张图求教程
烘箱和马弗炉的区别
合肥废旧物资回收有限公司物价表
我家win7系统 每打开一个需要运行的软件就出
哪位高手知道mp和mpdata有啥区别
竣工前准备工作?
解放西路交通设计院宿舍地址有知道的么?有点
建筑图纸上标洞顶距地4.2米是什么意思
便宜还是法国便宜,和香港比怎样
我OPPOa77和OPPO a77t手机壳可以通用吗?
狗今天吃了咸鸭蛋,怎么办
糟饼文言文翻译善字意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?