linux qt调用共享库,使用qt创建和使用共享库

我是共享库的新手,所以我对如何创建/使用共享库有疑问,我正在使用Qt Creator和qt 5.4.2与Microsoft Visual C 11.0 Compliler.

在我的项目中,我需要创建一个dll,它从外部库中调用函数(有.h,.lib,.dll可供使用).为了理解如何从库中导出/导入函数,我尝试用一​​个函数创建一个简单的库,并首先在另一个程序中使用它.

阅读完不同的教程后,我设法创建了库.在Qt Creator中,New Project-> Library(C Library) – > Type(共享库)名称:sharedlib-> Modules(QtCore) – > Finish.

sharedlib.h:

#ifndef SHAREDLIB_H

#define SHAREDLIB_H

#include

#if defined(SHAREDLIB_LIBRARY)

# define SHAREDLIBSHARED_EXPORT Q_DECL_EXPORT

#else

# define SHAREDLIBSHARED_EXPORT Q_DECL_IMPORT

#endif

extern "C" SHAREDLIBSHARED_EXPORT int add(int a, int b);

#endif // SHAREDLIB_H

sharedlib.cpp:

#include "sharedlib.h"

#include

extern "C" SHAREDLIBSHARED_EXPORT int add(int a, int b)

{

return a + b;

}

只添加了一个简单的函数来添加2个数字.

在构建之后,我得到了sharedlib.dll和sharedlib.lib以及其他一些文件,(在某些教程中没有.a文件,我认为是因为我使用的是微软vc编译器而不是.lib文件).

现在创建第二个我想要使用该库的程序:

新项目 – > Qt控制台应用程序 – >名称(loadlib) – >完成,然后我将sharedlib.lib,sharedlib.h,sharedlib.dll复制到loadlib目录中. (我需要它们吗?我应该把它们放在哪里?)

根据教程,右键单击项目 – > gt; add library-> external library->选择loadlib目录中的.lib文件,取消选中Platform下的Linux和Mac并选择Dynamic Linkage.

这是我的loadlib.pro:

QT += core

QT -= gui

TARGET = loadlib

CONFIG += console

CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/ -lsharedlib

else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/ -lsharedlib

INCLUDEPATH += $$PWD/

DEPENDPATH += $$PWD/

>如果我将.h和.dll / .lib文件放在子文件夹中,如loadlib / include和loadlib / libs,它将更改为INCLUDEPATH = $$PWD / include DEPENDPATH = $$PWD / include和LIBS = -L $$PWD / libs -lsharedlib,对吗?

>我需要将所有3个文件复制到我的loadlib目录吗?

> main.cpp:

#include

#include

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

// simple Debug output to add 7 and 3

return a.exec();

}

我如何在这里实际使用添加功能?

编辑:我改变了一些东西,摆脱了sharedlib_global.h并将内容粘贴到sharedlib.h,并摆脱了类,我可以直接调用函数而不将其包装到类中吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值