从您无法控制的线程中释放Python导入锁定。无权访问

时间:2015-05-20 19:28:52

标签: python c++ dll code-injection cpython

因此,我将一个DLL注入到Cython应用程序中以扩展其功能。我使用以下代码执行此操作: 注意:使用Python 2.7;使用旧的ModuleNoBlock方案

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模块here

的来源

但是_PyImport_ReleaseLock(void)只有在从获取锁定的同一线程中调用它时才会释放锁定。

是否可以这样做?

1 个答案:

答案 0 :(得分:0)

固定。使用

_PyImport_ReInitLock(void)
导入前