在 Python 中从 dll 调用函数时出现访问冲突

问题描述 投票:0回答:1

此函数在 C++ 中运行良好,但我在 Python 中遇到访问冲突错误

void RVRGetRecommendedRenderTargetSize(unsigned int* width, unsigned int* height) {
    hmd->GetRecommendedRenderTargetSize(width, height);
}

bool RVRSetupStereoRenderTargets() {
    if (!RVRIsReady()) return false;
    unsigned int renderWidth, renderHeight;
    RVRGetRecommendedRenderTargetSize(&renderWidth, &renderHeight);
    RVRCreateFrameBuffer(renderWidth, renderHeight, leftEyeDesc);
    RVRCreateFrameBuffer(renderWidth, renderHeight, rightEyeDesc);
    return true;
}
from ctypes import *

import os

os.add_dll_directory(os.path.split(__file__)[0])
rvrDLL = WinDLL("rvr.dll")

def RVRFUNC(name, restype, argtypes):
    func = getattr(rvrDLL, name)
    func.restype = restype
    func.argtypes = argtypes
    globals()[name] = func

...
RVRFUNC("RVRSetupStereoRenderTargets", c_bool, ())
...

...
RVRSetupStereoRenderTargets()
...
...
    RVRSetupStereoRenderTargets()
OSError: exception: access violation writing 0x0000000000000000

我正在开发一个使 steam vr 库更容易的库,它实际上在 c++ 中运行良好,但是当我在 python 中调用带有 dll 加载的函数时,我得到了这个访问冲突错误。

python c++ dll steamvr openvr
1个回答
0
投票

我意识到这个问题与 opengl 上下文共享有关并修复了它

© www.soinside.com 2019 - 2024. All rights reserved.