Вызов функции библиотеки С++ в vimscript

Есть ли способ вызвать функцию общей библиотеки С++ из плагина vim, написанного в vimscript?

Скажем, есть hello_world.so, который имеет функцию hello_world(). Я хочу вызвать эту функцию всякий раз, когда пользователь vim использует конкретную привязку ключа.

Ответы

Ответ 1

Да, вы можете это сделать, попробуйте: help libcall

Вам нужно будет экспортировать функции как неконсолированные C-функции с подозрительным соглашением "cdecl", которое я подозреваю:

Из справки vim:

Для Win32 функции, которые вы пишете, должны быть помещены в DLL и использовать нормальный C-вызов (NOT Pascal, который используется в Windows Системные DLL файлы). Функция должна принимать ровно один параметр, либо символьный указатель или длинное целое число и должен возвращать символ указатель или NULL. Возвращаемый символ должен указывать на память, который останется действительным после возвращения функции (например, в статическом данные в DLL). Если он указывает на выделенную память, эта память будет просачиваться. Использование статического буфера в функции должно работать, это затем освобождается, когда DLL выгружается.

Вот пример того, как это сделать здесь.