赞
踩
需要先安装osg,然后再编译安装osgQOpenGL的插件。
其中,osgQOpenGL是OSG嵌入到qt中的一种实现方式,换言之,能够支持QT的一个osg插件。
https://www.qt.io/offline-installers
可以直接安装QT的库以及IDE,也就是QT CREATOR。
安装的时候总是会卡在6%, 需要关掉有道词典词可以。
https://blog.csdn.net/FUHAILIANG_2015/article/details/122415845
styleSheet:
background-image:url("/home/orbbec/Pictures/explore-share-image-1280x720.png")
可以通过qmake命令,编译pro文件来生成Makefile。
Makefile保存了编译器和链接器的参数选项,以及所有源文件之间的关系。
具体命令为:
qmake "CONFIG += AAA BBB CCC" xxx.pro -o Makefile
xxx.pro文件的内容可以是:
CONFIG += staticlib
DEFINES += DDD_FUNC
# CONFIG 变量的所有值都可以直接用作条件语句的条件 !!!!!!!
AAA {
DEFINES += AAA_FUNC # 有这个CONFIG参数,所以会执行这条语句
}
DDD {
DEFINES += DDD_FUNC # 没这个CONFIG参数,所以不会执行这条语句
}
$$PWD
是项目的当前路径;
LIBS += -L "../../lib" -lopencv_world320
需要指定INCLUDEPATH以及DESTDIR。
QT += widgets
message($$PWD)
INCLUDEPATH += $$PWD/../../include
LIBS += -L ../../lib -lopencv_world320
SOURCES += main.cpp
CONFIG += console
DESTDIR += ../../bin
TARGET = testq # 输出文件名
库链接:
参考链接:https://blog.csdn.net/Marryvivien/article/details/41345281
(注:笔记自用,若侵权则立即删除)
假定目录结构为:
那么如果想要在main.cpp文件中使用这第三方库的话,就必须要做以下几件事情:
1. 指定头文件路径;
2. 指定库路径;
3. 指定库名字。
具体地,在.pro文件中添加以下语句:
此外,如果想要指定目标文件夹,那么可以在.pro文件中添加:
DESTDIR = bin
TARGET = testq # 输出文件名
TEMPLATE = lib
CONFIG += staticlib
CONFIG()
函数。可以用来控制编译不同的版本,debug版本和release版本。如果是debug版本则TARGET = libdll_d, 否则则是libdll. 类似于一个if 判断。
CONFIG(debug,debug|release){
TARGET = libdll_d
}else{
TARGET = libdll
}
想要独立构建一个桌面级别的应用,构建动态库和对其进行使用是必备技能。
在QT creator中,新建一个库后,会得到三个文件,文件结构如下图所示:
其中,vision3d
是我自己起的项目名称,而vision3d_global.h
头文件中所包含的则是动态库对外接口的宏定义:
此外,vision3d.h
才是真正对外的接口文件,动态库中需要被调用到的接口,都在这个文件中。
通常来说,我们使用的算法都是以库的形式交给开发或其他的人,那么,正常算法工作的编码实际上就是在vision3d.h
以及vision3d.cpp
中来实现的。
随便写一个测试函数,进行“构建”(build,或者快捷键 ctrl + B)后,可以在以下路径内,看到.so文件的生成:
当然,在windows下,编译的就是dll文件了。
随便新建一个控制台项目或者界面项目。
要使用动态库,我们要做的最关键的事情就是,修改pro文件,添加include目录和so文件目录
参考资料:
https://blog.csdn.net/qq_27278957/article/details/95945638
当然,也可以直接在qpro文件中右键“添加库”,然后添加“外部库”,指定include目录以及库目录即可。
然而,居然存在找不到库的情况,即使将库复制到.o文件同路径也无法找到,在这种情况下,亲测将库的路径加入到LD_LIBRARY_PATH中会可行:
参考链接为:https://blog.csdn.net/weixin_45261340/article/details/124967459?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124967459-blog-86527301.pc_relevant_default&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124967459-blog-86527301.pc_relevant_default&utm_relevant_index=2
此外,使用 QMAKE_LFLAGS += -Wl,-rpath=
也应当是奏效的。
共享库中的_global.h文件通常包含一些宏定义和声明,用于指示该库需要暴露哪些功能以供外部使用。具体来说,这个文件可能包括以下内容:
可移植性的声明:例如常见操作系统的宏(如WIN32或LINUX)以及大小端模式的声明。
共享库导出声明:可被外部程序调用的函数、类等类型需要在编写时进行导出,而其他不需要导出的则应保持为局部实现。
预处理变量和条件编译块。
在使用该共享库时,通常需要进行以下步骤:
1.将该共享库的 .h 文件路径添加到 include 路径中,以便您的程序可以找到该库的头文件。
2.将该共享库的 .so 或 .dll 文件(即库本身)路径添加到链接器路径中,以便您的程序可以在运行时动态加载该库。
3.在程序中包含相应的头文件,以访问库提供的功能。
4.使用 -l 和 -L 参数将库链接到程序中。其中,-l 参数后跟的是库的名称,-L 参数后跟的是库所在的目录。
这些步骤通常在编译命令行或配置文件中完成,具体实现方式可能略有差异,例如 qmake、CMake 等构建工具的使用方式会有所不同。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。