2011-07-13 43 views
1

經過長時間的研究,我決定寫一個問題。 我有一個C++ DLL有一個導出函數:ObjectType * getInstance() 有了這個實例,該函數返回,我可以訪問所有其他公共職能。在Python中調用一個返回對象引用的C++ DLL

我現在的問題是,我想在Python中使用這個東西。當我訪問ctypes getInstance我只得到一個整數值,而不是一個實例。 我嘗試的下一件事是在C++中編寫一個Python擴展。但是這也沒有奏效。

任何想法。

非常感謝您的幫助。

此致敬禮。

+0

你看過[Boost.Python](http://www.boost.org/doc/libs/release/libs/python/doc)或[SWIG](http://swig.org) ?他們使Python與C++接口非常容易 – CharlesB

+2

C++類和DLL在我看來不太好混合。您通常最終會限制DLL的客戶端使用與用於構建DLL的編譯器相同的編譯器。我會導出一個扁平接口'extern「C」'函數。使這些非成員函數的第一個參數是對象實例。 –

回答

0

據我所知,你不能直接從Python訪問C++類型。你必須用一些(通常是很多)C或C++代碼來包裝它:它不是 困難,但它需要時間。請參閱Extending and Embedding the Python Interpreter

+0

感謝迄今的回覆。我已經開始開發這樣的擴展。現在在那裏玩幾天。 – daalex