16

vimscript で書かれた vim プラグイン内から C++ 共有ライブラリ関数を呼び出す方法はありますか?

関数 hello_world() を持つ hello_world.so があるとします。vim ユーザーが特定のキー バインドを使用するたびに、この関数を呼び出したいと思います。

4

1 に答える 1

14

はい、これを行うことができます。試してください:help libcall

私が推測する「cdecl」呼び出し規約を使用して、関数を装飾されていない C 関数としてエクスポートする必要があります。

vim ヘルプから:

Win32 の場合、作成する関数は DLL に配置し、通常の C 呼び出し規則を使用する必要があります (Windows システム DLL で使用される Pascal ではありません)。この関数は、文字ポインターまたは長整数のいずれかのパラメーターを 1 つだけ取り、文字ポインターまたは NULL を返す必要があります。返される文字ポインタは、関数が返された後も有効なままであるメモリを指している必要があります (DLL の静的データなど)。割り当てられたメモリを指している場合、そのメモリはリークします。関数で静的バッファーを使用すると、DLL がアンロードされるときに解放されます。

ここにそれを行う方法の例があります。

于 2012-01-23T09:48:07.353 に答える