日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库

發布時間:2024/9/27 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 += c++11include(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_BEFORE=0x060000 # 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 += c++11# 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_BEFORE=0x060000 # 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文件中只是對當前動態庫的庫文件和頭文件路徑的說明。

    總結

    以上是生活随笔為你收集整理的mac上用qt调用自己生成的qt动态库,该动态库又依赖第三方库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。