读书人

Linux系统停Qt调用c++编译的库

发布时间: 2013-04-05 10:24:33 作者: rapoo

Linux系统下Qt调用c++编译的库

Linux系统下Qt调用c++编译的库

Linxu系统下调用c语言编译的so文件流程比较简单,代码流程如下(不做介绍了,可以查看qt assistant)


#include "CallCppsoDialog.h"#include "ui_CallCppsoDialog.h"CallCppSoDialog::CallCppSoDialog(QWidget *parent) :    QDialog(parent),    ui(new Ui::CallCppSoDialog){    ui->setupUi(this);    QLibrary myLib("libhellocpp.so");    ui->label->setText("bf myLib load");    if (myLib.load())    {        ui->label->setText("myLib.load");        Hi* myHi;         typedef Hi* (*MyPrototype)();         MyPrototype myFunction = (MyPrototype) myLib.resolve("createHi");         if (!myFunction)         {             qDebug("Null Hi");             return;         }         myHi = myFunction();         qDebug("--------%d---------", myHi->getInt());         char buffer[128] = {0};         myHi->getString(buffer);         ui->label_2->setText(QString(buffer));         typedef void (*Fun)(Hi* p);         Fun fun = (Fun)myLib.resolve("destroyHi");         if (fun)         {             fun(myHi);         }         myLib.unload();    }}CallCppSoDialog::~CallCppSoDialog(){    delete ui;}


利用C++的多态 和 extern "C" 可以完美解决Qt在调用C++文件编译的so文件。项目中遇到过类似的东西,拿出来备忘和共享


读书人网 >C++

热点推荐