gpt4 book ai didi

export - 使用 pragma 约定而不导出

转载 作者:行者123 更新时间:2023-12-03 21:41:24 25 4
gpt4 key购买 nike

我需要使用 Lua 的 Ada 库。我想使用一个通用包,它与其他数据一起将包含一个函数,该函数将根据数据以不同的名称在 Lua 中注册。据我了解,我应该将这个函数声明为“with Export,Convention => C”,但是当实例化这样一个包的几个实例时,库将包含几个具有相同名称的函数并且它不会编译。在这种情况下是否可以不使用“Export”,而只使用“Convention => C”,因为在 Lua 中仅使用函数引用进行注册?

with System; use System;
with Interfaces.C; use Interfaces.C;

generic

type Data is private;
Name : String;

package P is

function Call (Lua : Address) return int
with Export, Convention => C;

function Get_Name return String is (Name);

end P;

最佳答案

您只需要 Export如果函数需要对链接器可见(例如,当您有 C 代码显式调用此函数时)。如果你只需要通过指针将函数传递给 Lua 运行时,Convention => C在功能上就足够了,尽管您还需要另一个 Convention => C关于函数指针类型。

关于export - 使用 pragma 约定而不导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67332679/

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