0
Windows 7でPython Ctypesを使用してC++ DLLにアクセスしていますが、DLLのドキュメントがありますが、実際には開くことができません。私は関数を取り込むC++関数を使用しようとしています。関数はunsigned intとvoidポインタを取ります。ここで失敗した短いコードサンプルは次のとおりです。Ctypes - Pythonから無効ポインタを渡す
import ctypes
import os
root = os.path.dirname(__file__)
lib = ctypes.WinDLL(os.path.join(root, 'x86', 'toupcam.dll')) #works
cam = lib.Toupcam_Open(None) #works
def f(event, ctx): #Python version of function to pass in
pass
#converting Python function to C function:
#CFUNTYPE params: return type, parameter types
func = ctypes.CFUNCTYPE(None, ctypes.c_uint, ctypes.c_void_p)(f)
res = lib.Toupcam_StartPullModeWithCallback(cam, func) #fails
私はこのコードを実行するたびに、私は最後の行に、このエラーを取得する:
OSError: exception: access violation writing 0x002CF330.
私は本当に以来、この問題にアプローチする方法がわかりませんPythonエラーではなくC++エラーです。私はC++のためにオンラインで見つけた同様のエラーはポインタ関連であったので、私のvoidポインタと関係があると思います。 Ctypes voidポインターに問題がありますか?何か間違っていますか?
クイックグーグルは、 'Toupcam_StartPullModeWithCallback'はカメラ、コールバック、コンテキストの3つの引数を取ることを示しています。 http://www.webastro.net/forum/archive/index.php/t-138355.html – kfsone