gpt4 book ai didi

c++ - 如何使用 C++ 源代码和静态库创建 iOS 框架

转载 作者:太空狗 更新时间:2023-10-29 22:57:13 29 4
gpt4 key购买 nike

我有 C++ 源代码和一些代码正在使用的第 3 方静态库。我有一个简单的 iOS 应用程序,它运行这段代码。基本上,有这样的模块:

  1. iOS 应用
  2. my_lib.a
  3. 第 3 方静态库

和依赖项:ios_app -> my_lib.a -> 第 3 方静态库

一切都按预期进行。

现在我想创建一个 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)

然后我构建 Framework 并使用命令检查它有什么: nm -gU my_framework.framework/my_framework问题是,id 不显示来 self 的源文件的符号,而只显示来自 3rd 方库的符号。结果,当使用这样的框架时,我收到编译错误“找不到体系结构的符号......”

另一方面,如果我将我的框架声明为“静态”:

add_library (my_lib SHARED "")

但在那之后我没有在输出中看到所有这些第 3 方库,而是从我的源中看到符号。

我用谷歌搜索但没有找到任何答案或示例。可能是我遗漏了什么?

最佳答案

解决方案是以正确的方式导出类。

  1. 使用 cmake generate_export_header(...) 命令生成导出 header https://cmake.org/cmake/help/latest/module/GenerateExportHeader.html ;
  2. 在类声明中使用生成的宏,应该在外面使用;

关于c++ - 如何使用 C++ 源代码和静态库创建 iOS 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45436702/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com