qt编写的动态库怎么被vc,vb等其他程序调用

qt编写的动态库怎么被vc,vb等其他程序调用,第1张

mingw编译出来的静态库后缀名为a,编译出来的动态库的导入库后缀名为dlla,而在windows下后缀名为lib的库可能是静态库也可能是动态库的导入库。 mingw编译出来的动态库的导入库可以直接在vc中直接使用

Qt中如果想跨文件调用函数时,只要知道被调函数的声明即可。方法是:在调用之前增加被调函数的声明信息。

例如,在Acpp中调用Bcpp里面写的void func()函数,需要在Acpp中增加下面一行:

extern void func(); //声明func是一个外部函数

先贴上源代码:

#include<QProcess>

void test6::notepad()

{

QProcess pro = new QProcess;

pro->startDetached("C://Program Files (x86)//Notepad++//notepad++exe", QStringList());

}

说明:

1 使用Qprocess的startDetached()方法,当前程序关闭时,调用的外部程序能够照常运行。

2 第一个参数是外部exe路径,当exe路径中含有空格时,就需要用到第二个参数,如果外部应用程序只需要exe这一个就可以打开时,第二个参数写成QStringList()就可以了。

3 当外部应用程序出了exe还需要其他的文件才能打开时那么将其他文件路径写进QStringList()中。

给出源代码:调用notepad++打开路劲为QString qs的txt文档

void test6::notepad(QString qs)

{

QProcess pro = new QProcess;

pro->startDetached("C://Program Files (x86)//Notepad++//notepad++exe",QStringList(qs));

}

再给出一个我调用IrFanView查看的源代码:

void test6::IrffanView()

{

QProcess pro = new QProcess;

if (!vqs_strempty())

{

vqs_it = vqs_strbegin() + selecteditem;

pro->startDetached("D:\\IrfanView\\i_view32exe", QStringList(vqs_it));

}

else

{

pro->startDetached("D:\\IrfanView\\i_view32exe", QStringList());

}

}

Qt提供了一个 QLibrary 类供显示调用。下面给出一个完整的例子:

testDLLdll为自定义的dll文件,将其复制到程序的输出目录下就可以调用。

#include <QApplication>

#include <QLibrary>

#include <QDebug>

#include <QMessageBox>

typedef int (Fun)(int,int); //定义函数指针,以备调用

int main(int argc,char argv)

{

QApplication app(argc,argv);

QLibrary mylib("testDLLdll"); //声明所用到的dll文件

int result;

if (mylibload()) //判断是否正确加载

{

QMessageBox::information(NULL,"OK","DLL load is OK!");

Fun open=(Fun)mylibresolve("add"); //援引 add() 函数

if (open) //是否成功连接上 add() 函数

{

QMessageBox::information(NULL,"OK","Link to Function is OK!");

result=open(5,6); //这里函数指针调用dll中的 add() 函数

qDebug()<<result;

}

else

QMessageBox::information(NULL,"NO","Linke to Function is not OK!!!!");

}

else

{

QMessageBox::information(NULL,"NO","DLL is not loaded!");

return 0; //加载失败则退出

}

}

以上就是关于qt编写的动态库怎么被vc,vb等其他程序调用全部的内容,包括:qt编写的动态库怎么被vc,vb等其他程序调用、QT C++,如何在在一个CPP里直接调用到另一个CPP里的函数、c++中的qt调用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10126158.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存