vim docsは、すべての関数にCの呼び出し規約を使用しなければならないと述べています。 これは、すべてが大丈夫かどうかを確認するために最低限のDLLを書いたことを念頭に置いています。私はメイク問題なくコンパイルライブラリ呼び出しが失敗しました。C++ dll
test.dll: test.cpp
cl /LD test.cpp
clean:
del *.obj
del *.dll
del *.exp
del *.lib
を書いて、私のvimのディレクトリにDLLをコピーしコンパイルするための
#include <string>
std::string _declspec(dllexport) Meow() {
std::string Meow = "Meow!";
return Meow;
}
。 私の理解では、
:call libcall("test.dll","Meow",0)<cr>
によって関数を呼び出す必要があります。しかし、私はエラー364を取得し続けます: "Meow()"のライブラリ呼び出しに失敗しました。 libcall内の.dll名を変更すると、同じエラーが発生するため、私はdllに何か問題があるとの結論に至りました。 しかし、私のdllは問題なくコンパイルされています。 私は困惑しています。
Oooohhh、私は名前マングリングを防ぐために、文字ポインタと追加のextern「C」に戻り値の型を変更し、それが働いていた参照してください。感謝の仲間 –