有没有办法从用 vimscript 编写的 vim 插件中调用 C++ 共享库函数?
假设有一个 hello_world.so 有一个函数 hello_world()。每当 vim 用户使用特定的键绑定时,我都想调用这个函数。
有没有办法从用 vimscript 编写的 vim 插件中调用 C++ 共享库函数?
假设有一个 hello_world.so 有一个函数 hello_world()。每当 vim 用户使用特定的键绑定时,我都想调用这个函数。
是的,您可以这样做,请尝试:help libcall
您必须使用我怀疑的“cdecl”调用约定将函数导出为未修饰的 C 函数:
来自 vim 帮助:
对于 Win32,您编写的函数必须放在 DLL 中并使用正常的 C 调用约定(不是 Windows 系统 DLL 中使用的 Pascal)。该函数必须只接受一个参数,一个字符指针或一个长整数,并且必须返回一个字符指针或 NULL。返回的字符指针必须指向在函数返回后仍然有效的内存(例如在 DLL 中的静态数据中)。如果它指向分配的内存,则该内存将泄漏。在函数中使用静态缓冲区应该可以工作,然后在卸载 DLL 时将其释放。
这里有一个如何做的例子。