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调用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)