Although this is still a bit inconvenient, it is possible to keep DLL
loaded by incrementing reference count itself.
/* test.c */
#ifdef WIN32
# include <windows.h>
#else
# include <dlfcn.h>
#endif
#ifdef _MSC_VER
# define EXPORT __declspec(dllexport)
#else
# define EXPORT
#endif
EXPORT int load(char *path);
EXPORT int count();
int load(char *path) {
#ifdef WIN32
return (LoadLibrary(path) != NULL);
#else
return (dlopen(path, RTLD_LAZY) != NULL);
#endif
}
static int x = 0;
int count() {
return ++x;
}
" test.vim
let dll = has("win32") ? "test.dll" : "test.so"
call libcallnr(dll, "load", dll)
for i in range(10)
echo libcallnr(dll, "count", 0)
endfor
--
Yukihiro Nakadaira - [EMAIL PROTECTED]