簡體   English   中英

如何使用c ++源代碼和靜態庫創建iOS Framework

[英]How to create iOS Framework with c++ sources and static libraries

我有c ++源代碼和一些第三方靜態庫,代碼正在使用。 我有一個簡單的iOS應用程序,它運行此代碼。 基本上,有這樣的模塊:

  1. ios app
  2. my_lib.a
  3. 第三方靜態庫

和依賴項:ios_app - > my_lib.a - >第三方靜態庫

一切都按預期工作。

現在我想創建一個iOS框架,它將擁有my_lib.a和3rd_party.a,而ios_app將使用它。 我在做什么:

add_library (my_lib SHARED "")
target_sources(my_lib PRIVATE _my_source_files_)
set_target_properties(my_lib PROPERTIES FRAMEWORK TRUE _OTHER_KEYS_)
target_link_libraries (my_lib _3rd_party_libs)

然后我構建框架並檢查它有什么命令:nm -gU my_framework.framework / my_framework問題是,該id不顯示源文件中的符號,而只顯示來自第三方庫的符號。 結果,當使用這樣的框架時,我得到編譯錯誤'找不到架構的符號......'

另一方面,如果我將我的框架聲明為“靜態”:

add_library (my_lib SHARED "")

但之后我沒有看到輸出中的所有第三方庫,但看到我的來源的符號。

我用谷歌搜索,沒有找到任何答案或例子。 可能是我遺失了什么?

解決方案是以正確的方式導出類。

  1. 使用cmake generate_export_header(...)命令https://cmake.org/cmake/help/latest/module/GenerateExportHeader.html生成導出標頭;
  2. 在類聲明中使用生成的宏,應該在外面使用;

暫無
暫無

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

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