【发布时间】:2022-01-29 03:24:29
【问题描述】:
README.testing 说
然后“演示”将使用 Plugins.Call 来
- 使用 dlsym() 例程检索对动态库中符号的访问。
Plugins.Call 是唯一调用 dlsym 的子程序。现在:
- grep 在插件源之外的任何源文件中都找不到“调用”
- 放置在 Call 末尾的 Put_Line 永远不会产生任何输出
- Put_Line 放置在 Plugins.Load 的末尾会产生输出,所以我正在摸索正确的包 (plugins_unix.adb)。
简而言之:它有效,但我不知道为什么。如何在不使用 dlsym 的情况下调用在运行时加载的库中的函数?
【问题讨论】:
-
你能提供一个超链接吗?
-
另请说明您的意思有用.你没有描述你在做什么。
-
“它可以工作”是指我可以使用 gprbuild 和给定的项目文件编译它,结果可以执行并按预期运行。我用主程序“演示”做到了这一点。在它运行时,我编译了插件,它们被主程序检测到并在其上使用。
-
GNAT 示例下adacore.com/code-samples 中的下载链接。
-
另见
$ADA_HOME/share/examples/gnat/plugins。