2017-09-20 4 views
0

に渡し扱うwinID:取得PyQtは、C++の私はと呼ばれる機能持っ

bool game_init(void* window); 

が++基本的にはそれだけでOpenGLを初期化し、Cからのレンダリングん、ウィンドウハンドルへのポインタを取りますが(私が使ってPythonにこの関数をエクスポートboost :: python)、今私はそれを試して、単純なhello単語ウィンドウを作成しました。私は*ハンドルは、私はそれがハローワールドウィンドウのハンドルだと思い85983252のような単なる整数ものですが、どのように私は無効として、この整数を渡すんでしたすべてのことを

app = QtWidgets.QApplication(["",""]) 
window = QtWidgets.QMainWindow() 
winid = window.winId() 
ctypes.pythonapi.PyCapsule_GetPointer.restype = ctypes.c_void_p 
ctypes.pythonapi.PyCapsule_GetPointer.argtypes = [ctypes.py_object, ctypes.c_char_p] 
handle = ctypes.pythonapi.PyCapsule_GetPointer(winid.ascapsule() , None) 

興味深いというのが私のC++コードはできるので、それを使ってOpenGLウィンドウを作成しますか? 現在のところ、エラーが表示されます:python parameter bool game_init(int); cppコードと一致しません。 window.winId()から返さ

答えて

0

winidは、(C/C++に関して)符号なし整数のポインタです。あなたのhandleもそうです。

"C"機能を持つ共有オブジェクトライブラリを既に読み込んでいることをお勧めします。

次に、ライブラリオブジェクトを使用してC関数を呼び出してハンドルを渡します。

何かのように、

lib.game_init(handle) 
関連する問題