【发布时间】:2012-04-03 09:17:08
【问题描述】:
我正在将 libx264 转换为 renderscript 作为一个练习,以了解将更大的项目移植到 renderscript 需要多少工作。 renderscript 的痛点之一是所有东西都需要声明为静态才能自动获取 java 接口。此外,这个自动 java 接口不能处理指针、多维数组等。因此我需要在 libx264 中将所有函数和全局变量声明为静态,除了一些调用函数来控制它。
然后我的问题是,由于所有内容都被声明为静态,因此我需要将所有代码都放在一个文件范围内。我开始只是将所有 C 代码文件包含在一个文件中并进行编译。如果不是 libx264 本身也包含具有不同预处理宏定义的 C 文件,这将很容易工作,因此一些函数存在两次,内容不同,而一些函数被重新声明为相同。我当然可以手动处理这个,但使用工具会更容易。
我在问是否有人知道一种工具,它可以获取 C 项目并将其预处理/合并到一个 C 文件中,管理重新声明、冲突声明等。
而且我认为堆分配将是一个难题......
【问题讨论】:
-
“那么我的问题是,由于所有内容都被声明为静态” - 无论如何,renderscript 仅支持每个脚本的单个 C 文件 - 无法直接将多个文件链接在一起。虽然您可以通过 rsForEach 调用另一个脚本。
-
是的,谢谢,我发现在发布之后,我没有先测试这个,因为它支持 .rsh 文件,并且我认为它允许函数声明作为内置的 .rsh 文件。但是我仍然需要一个工具来正确地将所有 c 文件合并到一个文件中。从那时起,这将是将通用 c 项目转换为渲染脚本的唯一方法。
标签: android c c-preprocessor renderscript