调用不相关的可执行文件中的函数

如果我有一个指向一个函数的指针,并且把它指向另一个(Unrelated / Child)可执行文件,我怎样才能调用这个函数而不会产生段错误?

目前我可以创build一个函数并为其分配这个内存地址:

Dim As Function (ByRef As String) As Integer MyFunction ' get pointer... MyFunction = FunctionPointer 

但是,然后调用MyFunction我得到一个段错误(显然,因为我打电话的函数是在另一个可执行文件的地址空间,我不允许访问)

我如何解决这个问题/解决它?

如果你可以控制另一个可执行文件(你想从中调用一个函数),然后将其构建为一个PIE (位置无关的可执行文件),并将其加载到第一个可执行文件的地址空间中。

C ,您将使用-fPIC -pie构建,然后使用dlopen(3)dlsym(3)

BASIC ,我不知道;-(

与其他功能的地址空间“不允许访问”相比,并不是说这个空间是一个完全不同的,不相关的地址空间。 每个进程都有它自己的虚拟地址空间 ,所以你的指针的数值在另一个函数地址空间内没有意义,即使你能以某种方式交换它。

对于一般的进程间通信,你通常从系统请求共享内存,但我不确定FreeBasic是否公开这样的功能。 为什么不查找一些现有的远程过程调用库?