Linux下Qt调用动态库.so
本文主要讲解了linux环境下,QT如何调用用linux c编写的动态库,这个实验也可以用arm开发中。
·
环境:ubuntu18.04 64位
qt版本:qt5.12.0
编译工具:gcc
一、创建工程
工程目录结构如下
.
└── calc
├── calc.cpp
├── calc.h
├── calc.pro
├── calc.pro.user
├── calc.ui
├── main.cpp
└── shareObject
├── demo.c
├── demo.h
├── demo.o
├── libdynamic.so
└── Makefile
二、编译动态库.so
1、创建三个文件demo.h、demo.c和Makefile
(1)demo.h代码如下
#ifndef __DEMO_LIB_H
#define __DEMO_LIB_H
#ifdef __cplusplus
extern "C" {
#endif
int add(int a, int b);
#ifdef __cplusplus
}
#endif
#endif
(2)demo.c代码如下
//返回a+b的和
int add(int a, int b)
{
int c = a + b;
return c;
}
(3)Makefile代码如下:
GCC := gcc
SRCS := $(wildcard *.c)
OBJS := $(patsubst %.c, %.o, $(SRCS))
TARGET = libdynamic.so
all:$(TARGET)
%.o:%.c
$(GCC) -c -fPIC $< -o $@
libdynamic.so:$(OBJS)
$(GCC) -shared -o $@ $^
.PHONY:clean
clean:
rm -fr $(TARGET) $(OBJS)
(4)执行makefile生成需要的动态库libdynamic.so
三、Qt调用动态库.so
(1)在calc.pro中添加头文件路径和动态库路径
(2)calc.cpp中调用函数add(a,b),其代码如下
#include "calc.h"
#include "ui_calc.h"
#include "demo.h"
#include <QDebug>
Calc::Calc(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Calc)
{
ui->setupUi(this);
int a =3;
int b= 4;
int c = add(a,b);
qDebug() << "a + b = " << c;
}
Calc::~Calc()
{
delete ui;
}
四、源码下载
链接:https://pan.baidu.com/s/1Hkl7s5pOiksv7vZD3BKB9Q
提取码:05ev
更多推荐
已为社区贡献1条内容
所有评论(0)