android - delphi XE7 firemonkey android共享对象/库动态加载-模板

标签 android delphi templates object shared

是否有一个模板来创建一个 .so 文件,该文件可以由另一个 delphi ape 文件加载 - 我已经尝试启动一个空白的 fire monkey 项目并将程序更改为库并构建它,但是它生成的 .so 文件不会'在另一个 Delphi 项目中加载 dlopen。我读过在其他开发环境中有一个 islibrary 设置。我想更重要的是有一个用 fire monkey 构建的 .so 库示例 - 我找到了没有 fire monkey 的基本链接,但它只使用 jni 而不是 androidapi.jni - 谢谢

最佳答案

如果您开始一个空白的 Firemonkey 项目并将 Unit 更改为 Library,您将收到此编译器错误:

[DCC Error] myfunnylib.pas(1): E2029 'UNIT' expected but 'LIBRARY' found


尝试将现有库项目添加到项目组会将所述项目与构建的其余部分分开,并为其分配唯一的构建目标和平台。这将使您可以选择针对 Windows 和 OS X 进行编译。

到目前为止,我听说过的唯一方法是使用另一个编译器预编译您的库。 FPC 已在别处提及。我还没有尝试过,但它在列表中是下一个。

http://wiki.freepascal.org/Android

不要因为每个 Android 应用程序实际上都是一个扩展名为 .so(共享对象)的共享对象而感到困惑。但是,这与共享库不同。 因为库会导出其函数,而应用程序不会。对于编译器来说,这是一个很大的不同,尽管您不会通过查看文件扩展名(而是它的前缀 lib)看到这一点。

如果您将问题限制在 XE 和 Firemonkey 上,我在这里唯一的建议是查看 Android 服务。绑定(bind)的本地服务可能会提供您希望从库中获得的类似功能:

http://docwiki.embarcadero.com/RADStudio/Seattle/en/Android_Service

同样重要的是要注意,Android N 将不再允许动态链接,因此您可以在其他地方找到的许多方法作为解决方案都不起作用。

suat dmk 下面答案中的代码示例虽然被赞成,但具有误导性。
它不能在 XE 10.1 或其任何前身中为 Android 或 iOS 编译。

更新:
Embarcadero 工作人员就此问题发表了明确声明。
问题解释的有点耐心,不过回复的很清楚:

[..] wants Delphi to have a project type of Shared Library(.so),
in this case then he is right, Delphi does not have it right now. [..]

四分五裂

因此不可能有这样的模板。也回答this问题。

关于android - delphi XE7 firemonkey android共享对象/库动态加载-模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974343/

相关文章:

c - 如何将 C union 转换为 delphi?

Delphi 2010 启动时卡住

c++ - 使用函数模板重载运算符

android - 无法从 Windows 10 中的 Eclipse 启动 GenyMotion

android - 打开/关闭 gprs 代码

android - 如何降级Google Play中的api?

delphi - 应用程序有时会从 Win7 的 ALT-TAB 列表中消失

android - InappBilling 错误 - 需要身份验证。你需要登录你的谷歌账户

javascript - 将参数传递给 Blaze 模板

templates - 如何使用 Glass Mapper 实现 Sitecore 模板继承