修改ffi模块源码中 win32-dlfcn.cc 文件的 96行与99行代码(下图中注释掉的两行),注释或删除即可。
if (unicodeFilename == NULL) {
lastError = GetLastError();
return NULL;
}
// errorMode = GetErrorMode();
/* Have LoadLibrary return NULL on failure; prevent GUI error message. */
// SetErrorMode(errorMode | SEM_FAILCRITICALERRORS);
handle = (void*) LoadLibraryW(unicodeFilename);
然后对ref与ffi模块重新编译,编译相关步骤可以参考这里,编译时并不需要基于xp系统环境。
测试运行环境:
1. 系统:windows xp sp3
2. nw: 0.14.7 (xp系统下使用ffi模块能支持的最高版本)
3. ffi: 2.2.0