今天测试完成在linux下调用so共享库,和在Windows下调用dll一样。 QLibrary mylib("/home/mylinux/wjp/testso/libposapi.so");用了全路径,当前路径不行,还需要试验。
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QLibrary>
typedef unsigned long (*fun)( unsigned short InputSize, char *InputXMLString, unsigned short OutputSize, char *OutputXMLString);
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QLibrary mylib("/home/mylinux/wjp/testso/libposapi.so");
ui->label->setText("myLib load?????");
if (mylib.load())
{
ui->label->setText("myLib load");
fun open1=(fun)mylib.resolve("PosTaxControlService");
if (!open1)
{
ui->label->setText("myLib load but err");
return;
}
else
{
ui->label->setText("myLib load ok");
}
......
int li_ret(0);
li_ret=open1(ilen, ls_strin, outlen, ls_strout);
......
mylib.unload();
}
else
{
ui->label->setText("myLib not load");
}
}
MainWindow::~MainWindow()
{
delete ui;
}