从您不控制的线程中释放Python导入锁&;无法访问
因此,我将一个DLL注入Cython应用程序,以扩展其功能。我使用以下代码执行此操作: 注意:使用Python2.7;使用旧的ModuleNoBlock方案从您不控制的线程中释放Python导入锁&;无法访问,python,c++,dll,code-injection,cpython,Python,C++,Dll,Code Injection,Cpython,因此,我将一个DLL注入Cython应用程序,以扩展其功能。我使用以下代码执行此操作: 注意:使用Python2.7;使用旧的ModuleNoBlock方案 PyGILState_STATE sMain = PyGILState_Ensure(); PyObject* mHook = PyImport_ImportModuleNoBlock("hookmodule"); PyGILState_Release(sMain); 现在,当我将DLL注入应用程序并打印错误时,我得到以下结果: Impo
PyGILState_STATE sMain = PyGILState_Ensure();
PyObject* mHook = PyImport_ImportModuleNoBlock("hookmodule");
PyGILState_Release(sMain);
现在,当我将DLL注入应用程序并打印错误时,我得到以下结果:
ImportError: Failed to import hookmodule because the import lockis held by another thread.
我找到了imp模块的源代码
但是\u PyImport\u ReleaseLock(void)
只有在从获取锁的同一线程调用锁时才会释放锁
可以这样做吗?已修复。使用
_PyImport_ReInitLock(void)
进口前