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