gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:45:43 25 4
gpt4 key购买 nike

是否有一个模板来创建一个 .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/

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