您能从ABAP加载共享对象(库)并调用它们的函数(FFI)吗?

您能从ABAP加载共享对象(库)并调用它们的函数(FFI)吗?,abap,Abap,是否可以从应用服务器上的文件加载动态共享对象/库,并从ABAP加载其函数(即外部函数接口) 我知道您可以使用call语句调用内核函数,但内核中可能有支持加载库并调用其函数的函数?我不知道有哪个内核函数可以让您这样做。可能有一个,但内核函数肯定没有公开文档,所以您需要自己探索disp+work可执行文件,看看是否存在。如果你找到一个,你就需要确定参数是什么。这不是一项容易的任务。如果你想探索,我可能会在Linux系统上使用objdump和elfsh作为我的起始工具集 如果我试图实现您描述的东西,我

是否可以从应用服务器上的文件加载动态共享对象/库,并从ABAP加载其函数(即外部函数接口)


我知道您可以使用call语句调用内核函数,但内核中可能有支持加载库并调用其函数的函数?

我不知道有哪个内核函数可以让您这样做。可能有一个,但内核函数肯定没有公开文档,所以您需要自己探索
disp+work
可执行文件,看看是否存在。如果你找到一个,你就需要确定参数是什么。这不是一项容易的任务。如果你想探索,我可能会在Linux系统上使用
objdump
elfsh
作为我的起始工具集


如果我试图实现您描述的东西,我会使用。我会使用C语言,因为它会给加载外部库带来最大的灵活性。您需要处理加载库的操作系统特定部分(例如,在Unix系统上使用
dlopen()并动态调用.< /P>你确实认为内核可以运行在Linux、Windows NT、AS/400、Solaris或其他几个操作系统上?vwegert我所知道的各种语言(如Ruby、Python、Lua、Red、Haskell等)的FFI的所有实现都是跨平台的。这当然取决于以特定于平台的方式加载二进制文件。(例如,我使用Ruby FFI围绕NW RFC SDK库开发了一个跨平台的包装器:)我现在正忙于研究nm转储的disp+工作:-)函数太多了,你是对的,没有文档,人们无法理解其中的大部分,特别是如果你不知道它们的签名的话。我还认为在某个地方有一个内核函数的白名单,可以通过调用调用。这意味着您无法直接访问LIBC函数:-/无论如何都会尝试。但感谢指向dlopen()的指针(NPI)。现在让我们来看一看。事实上,有一个ABAP可调用内核函数的白名单(包含在内核源代码中的
sapactab.h
)。如果你想加入:-)PS,我第一次不知道你对通用加载程序RFC服务的想法,但这听起来是一个非常明智的想法+1.