簡體   English   中英

弱鏈接框架到靜態庫

[英]Weak linking a framework to a static library

問題

我的項目安排如下:

  • 應用
    • 骨架
      • 靜態庫(通用代碼)

靜態庫將根據GoogleWebRTC框架啟動。 不幸的是,這種依賴只能通過WebRTC.org構建為框架。 由於維護原因,他們刪除了構建為靜態庫的功能。

靜態庫是否可以弱鏈接到GoogleWebRTC框架?

  • 應用
    • 骨架
      • 靜態庫(“ CommonCode”)
    • GoogleWebRTC

我想到的一些解決方案是:

  • 將WebRTC頭文件包含在靜態庫中,並使用自定義模塊映射進行構建,以使include "<WebRTC/WebRTC.h>起作用。然后將庫嵌入並鏈接到App目標中
  • 以某種方式將GoogleWebRTC.framework轉換為靜態庫,並將標頭和二進制文件嵌入“ CommonCode”靜態庫中
  • 我...不記得我想到的另一個解決方案。 我記得時會更新此信息。

對於Google而言,刪除靜態目標是不幸的決定。

如果有幫助,您可以使用mesibo webrtc框架,該框架是使用修改后的ninja文件構建的靜態框架 唯一的缺點是,它不像Google構建那樣定期更新(通常會延遲一個月的同步)。

https://github.com/mesibo/mesibowebrtcframework

所有你需要做的就是復制WebRTC.framework/WebRTC使用從mesibo版本,這不過是一個靜態庫,提取lipo -extract並使用與自己的庫重新包裝lipo -create

以下是您將在Mesibo和Google版本的WebRTC框架中看到的區別

Mesibo版本

$ file WebRTC.framework/WebRTC
WebRTC.framework/WebRTC: Mach-O universal binary with 4 architectures: [i386:current ar 
archive random library] [arm64]
WebRTC.framework/WebRTC (for architecture i386):    current ar archive random library
WebRTC.framework/WebRTC (for architecture armv7):   current ar archive random library
WebRTC.framework/WebRTC (for architecture x86_64):  current ar archive random library
WebRTC.framework/WebRTC (for architecture arm64):   current ar archive random library

和谷歌版本

$ file WebRTC.framework/WebRTC
WebRTC.framework/WebRTC: Mach-O universal binary with 4 architectures: [x86_64:Mach-O 64-bit dynamically linked shared library x86_64] [arm64]
WebRTC.framework/WebRTC (for architecture x86_64):  Mach-O 64-bit dynamically linked shared library x86_64
WebRTC.framework/WebRTC (for architecture i386):    Mach-O dynamically linked shared library i386
WebRTC.framework/WebRTC (for architecture armv7):   Mach-O dynamically linked shared library arm_v7
WebRTC.framework/WebRTC (for architecture arm64):   Mach-O 64-bit dynamically linked shared library arm64

讓我知道您是否需要更多輸入!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM