代码之家  ›  专栏  ›  技术社区  ›  tantuni

如何从julia调用共享库中的函数指针

  •  0
  • tantuni  · 技术社区  · 2 年前

    在Julia中,我们可以从共享库中调用一个普通(和导出)函数,如下所示:

    libHnd=Libdl.dlopen("/Path/To/Lib.so")
    funHnd=Libdl.dlsym(libHnd,"funName")
    @ccall $funHdl()::Cvoid
    

    但是,让我们假设库包含一个导出的函数指针的变量,但实际函数没有导出。例如:

    static void funName(void);
    void (*funPtr)(void)=funName;
    

    在这种情况下,我如何才能从Julia那里调用funPtr?

    我特别在寻找一种解决方案,以解决funPtr的值可以由库本身动态更改的情况。(事实上,这就是为什么库只导出函数指针而不是函数本身的原因。libVolk就是这样一个用例的例子)。

    0 回复  |  直到 2 年前