建设网站的,网站建设站点地图,会展网站的建设情况,做短视频网站好qt下依赖于第三方库生成的动态库的调用概述基于声网的sdk如何在自己的动态库中使用使用基于第三方库的动态库下面看pro文件中的设置概述
初次使用mac上的qtCreator生成动态库#xff0c;该动态库编写时调用了第三方库#xff0c;基于生成的该动态库#xff0c;编写测试程序…
qt下依赖于第三方库生成的动态库的调用概述基于声网的sdk如何在自己的动态库中使用使用基于第三方库的动态库下面看pro文件中的设置概述
初次使用mac上的qtCreator生成动态库该动态库编写时调用了第三方库基于生成的该动态库编写测试程序来使用改动态库。第三方库为声网所提供的sdk基于声网sdk实现自己的功能并封装成动态库。
基于声网的sdk如何在自己的动态库中使用
此时针对于声网sdk封装自己的动态库先从声网下载mac平台下的sdk和windows平台下的sdk,解压后将需要的库文件和头文件存放在项目目录下可以建立各自的文件夹。下面先对项目目录下的涉及到第三方库文件和头文件的文件夹作以说明。 上图中lib是Mac下声网的库文件因为在.framework后缀的文件夹下有的文件夹下含有头文件。 上述后缀.framework文件夹下含有头文件。这个文件夹lib下存放的是Mac下声网的库文件和头文件。 sdk目录下存放的从声网下载的Windows系统下所需的头文件动态库和静态库。有一个不足就是将Mac下声网使用的静态库放在了lib下图中蓝色选中的便为Mac下声网的静态库文件。 下面来看pro文件中的配置。
QT gui
QT core quickwidgetsTEMPLATE lib
DEFINES TESTAGORAVIDEODLL_LIBRARYCONFIG c11include(deployment.pri)# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES \agorartcengine.cpp \avideowidget.cpp \dynamiclibentry.cpp \mainwindow.cpp \testagoravideodll.cpp \video_render_impl.cpp \video_render_opengl.cppHEADERS \agorartcengine.h \avideowidget.h \dynamiclibentry.h \mainwindow.h \testAgoraVideoDll_global.h \testagoravideodll.h \video_render_impl.h \video_render_opengl.h# Default rules for deployment.
#unix {
# target.path /usr/lib
#}
#!isEmpty(target.path): INSTALLS targetRESOURCES \qml.qrcDESTDIR $$PWD\generateDll #生成的动态库存放的路径该文件夹generateDll会自动创建win32: { #Windows下使用第三方库时的配置头文件库文件路径INCLUDEPATH $$PWD/sdk/includeLIBS -L$$PWD/sdk/lib/ -lagora_rtc_sdkCONFIG(Debug, Debug|Release){QMAKE_POST_LINK copy sdk\dll\*.dll debug #编译后执行内容 将sdk拷贝到debug目录下} else {QMAKE_POST_LINK copy sdk\dll\*.dll release #将sdk拷贝到release目录下
# QMAKE_POST_LINK windeployqt Release\AgoraVideoCall.exe #打包程序}
}macx:{ #mac下使用第三方库所需要的配置头文件库文件的路径Mac的系统版本等
QMAKE_INFO_PLIST Info.plist #貌似关于Mac的一些配置不是自己编写的别人拷给我的
QMAKE_MACOSX_DEPLOYMENT_TARGET 12.0 #设置所需平台INCLUDEPATH $$PWD/lib/AgoraRtcKit.framework/Headers #Mac下使用声网sdk所需头文件的路径QMAKE_LFLAGS -F/System/Library/Frameworks #设置可执行程序库文件的查找路径可能不需要这个设置
QMAKE_LFLAGS -F$$PWD/lib/ #库文件存放的路径LIBS -framework AgoraRtcKit #需要使用的库文件
LIBS -framework Foundation \ #貌似这个库是Mac自己的库具体不清楚-framework CoreAudio \-framework CoreVideo \-framework CoreServices \-framework AppKit \-framework AudioToolbox \-framework VideoToolbox \-framework Accelerate \-framework SystemConfiguration \-framework AVFoundation \-framework CoreMedia \-framework CoreWLAN \-framework QTKit \-framework CoreGraphicsLIBS -lresolv
}以上是pro工程文件中关于在自己的动态库中使用第三方库的配置。另外在运行时出现如下错误 需要在自己项目的运行环境下配置参数 此参数配置的时候结合生成的错误提示看看找不到那个库将该库所在的路径添加到上图所示参数的路径下。
使用基于第三方库的动态库
创建自己使用动态库的项目将所需的动态库放在项目目录下将动态库所需的头文件放在项目目录下。 只需将之前生成的动态库的库文件放在一个单独的目录下将生成动态库的头文件放在单独的目录下将存放动态库与头文件的目录放在项目目录下便可。如下 上图中红色的框中是要使用的动态库所在的文件夹dllLibary和头文件所在的文件夹include蓝色的框中是当时生成动态库所依赖的第三方库。
下面看pro文件中的设置
QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 # disables all the APIs deprecated before Qt 6.0.0SOURCES \main.cpp \dialog.cppHEADERS \dialog.hFORMS \dialog.ui# Default rules for deployment.
qnx: target.path /tmp/$${TARGET}/bin
else: unix:!android: target.path /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS targetmacx:{
QMAKE_INFO_PLIST Info.plistQMAKE_MACOSX_DEPLOYMENT_TARGET 12.0 #设置所需平台INCLUDEPATH $$PWD/includeQMAKE_LFLAGS -F/System/Library/Frameworks #设置可执行程序库文件的查找路径
QMAKE_LFLAGS -F$$PWD/dllLibary #生成的动态库所引用的路径LIBS -L$$PWD/dllLibary/ -ltestAgoraVideoDll.1.0.0 #使用的动态库
}
还需要配置改使用动态库的测试程序运行环境和上面提到的一样选中改项目右键设置为活动项目点击左侧的项目 选中运行即run,在环境这里添加变量即被测试的动态库当时使用的第三方库的路径在我的项目文件夹下是lib文件夹改文件夹存放生成的动态库所依赖的第三方库将第三方库的路径添加到变量DYLD_FRAMEWORK_PATH 中。接下来就是在需要使用动态库的文件中引入相应的头文件调用所需函数即可。 注意 当生成动态库有用到一些资源文件时不需要在使用动态库的项目中考虑该因素这里的资源文件包含图片qml文件。使用动态库只需引入要使用的动态库的头文件和库文件至于动态库所依赖的第三方库文件直接在测试动态库的项目目录下存放配置好运行时的环境变量就行pro文件中只是对当前动态库的库文件和头文件路径的说明。