菜鸟教程小白 发表于 2022-12-11 19:10:19

ios - 将静态 Objective-C 框架转换/包装成可以在 Swift 项目中使用的动态框架


                                            <p><p>我应该遵循哪些步骤将静态 <code>Objective-C</code> 框架转换/包装成可在 <code>Swift</code> 中使用的 <code>动态框架</code>项目?</p>

<p>我已经尝试过这里描述的第二种方法:<a href="https://pewpewthespells.com/blog/convert_static_to_dynamic.html" rel="noreferrer noopener nofollow">https://pewpewthespells.com/blog/convert_static_to_dynamic.html</a>但收到如下错误:</p>

<blockquote>
<p>include of non-modular header inside framework module </p>
</blockquote></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>在幕后,Clang 正在尝试为框架创建一个 module.map 文件。当您执行 <code>@import Foundation</code> 之类的操作时,module.map 会组织导入。</p>

<p>模块导入更像 Java 导入,而不是 Cheader 包含。 C 头文件包含(或老式 Objective-C 导入)在编译时将 <code>#include <whatever.h></code> 替换为该文件的内容。模块导入是一种语义导入,告诉编译器符号在哪里定义等等。</p>

<p>现在,错误 <em>"include of non-modular header inside framework module"</em> 基本上意味着您的模块(即您的新框架)有一个 header (任何公共(public) .h 文件),它本身具有来自本身不是“模块化”的文件的 <code>#import</code> 或 <code>#include</code> 语句。</p>

<p>最常见且最容易修复的错误是将这些 <code>#include</code> 移到需要它们的 .m 文件中,然后移出 .h 文件。</p >

<p>另外,请确保正确设置您的框架,尤其是关于 header 。您希望所有公共(public) header 都包含在您的总括 header 中,并且您希望确保正确设置构建过程以根据需要复制公共(public)、私有(private)和项目 header 。获取示例的最简单方法是创建一个新的、完全干净的 Framework 项目,然后查看它是如何设置的。请注意阅读自动生成的伞形标题中的注释。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 将静态 Objective-C 框架转换/包装成可以在 Swift 项目中使用的动态框架,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/47053320/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/47053320/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 将静态 Objective-C 框架转换/包装成可以在 Swift 项目中使用的动态框架