如何使用 c++ 源代码和静态库创建 iOS 框架
How to create iOS Framework with c++ sources and static libraries
我有C ++源代码和一些第三方静态库,代码正在使用这些库。我有一个简单的iOS应用程序,它运行此代码。基本上,有这样的模块:
- 苹果应用程序
- my_lib.a
- 第三方静态库
和依赖关系: 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 "")
但在那之后,我没有在输出中看到所有这些第三方库,而是看到了来自我的来源的符号。
我用谷歌搜索过,没有找到任何答案或例子。可能是我错过了什么?
解决方案是以正确的方式导出类。
- 使用 cmake generate_export_header(...( 命令生成导出标头 https://cmake.org/cmake/help/latest/module/GenerateExportHeader.html;
- 在类声明中使用生成的宏,这些宏应该在外部使用;
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在iOS应用程序中创建数据库
- 使用C++创建UDP服务器以嵌入跨平台iOS和Android应用程序中
- 如何使用 c++ 源代码和静态库创建 iOS 框架
- 如何使用iOS上的JavaScriptCore创建从JavaScript调用的C 回调
- 在C++中创建静态库(.a)(不适用于iOS)
- 如何创建C/C++库并将其放入iOS的Xcode中
- 如何在 C++ 中为安卓和 iOS 创建共享库
- 是否可以创建一个可以在ios移动平台和windows桌面平台之间运行的应用程序,而无需使用web界面
- 如何使用gles创建ios模糊效果
- 为iOS设备创建唯一标识符
- 在iOS上创建实时聊天室后,Google Play游戏服务崩溃
- 是否有一个(比较高级的)c++库来创建在iOS和Android上运行的pdf文档?
- std::ios::openmode的组合,如果文件存在,则截断,但防止创建新文件
- 我如何在Xcode 4.2上创建一个UITableView,用于IOS 5
- 在iOS中使用c++创建目录/文件