4

私は2つのC++オブジェクトを持っています

    int queueIndex
    Timer timer_obj

ここにタイマークラスの定義があります

class Timer
{

private:
    struct timeval tStart; /**< @brief Stores the system time when the timer is started */
    struct timeval tFinish; /**< @brief Stores the system time when the timer is stopped */

protected:
    float getElapsedTime(struct timeval, struct timeval);

public:
    Timer();
    string currentTime();
    float currentElapsedTime();
    void restart();
    float stop();
    int high_pres_usleep_untill(unsigned long long int);
    string getStringStartTimer();
    void setStartTimerFromString(string);
    void sleep(long int);
    unsigned long long int get_clock();

これら 2 つのオブジェクトを PyObj* に変換する必要があります。この目的のために boost::python を使用していました。今は、boost や swig なしで実行したいと考えています。インデックスの変換に成功しましたが、timer_obj についてはわかりません

    PyObject* pyo=PyInt_FromLong(queueIndex)

誰かがこれで私を助けてくれたらありがたいです.私は完全なコードを私に与える必要のない例が必要です.また、クラスで定義された関数は少し複雑なので、ここではそれらを与えませんでした.それは可能ですか? timer_obj を変換してから新しい参照を割り当てるか、クラス内のすべての構造体と関数の新しい参照を取得して、これらの参照を使用して新しいクラスを作成する必要がありますか?

4

2 に答える 2

2

あなたがする必要があるのは、拡張タイプを作成することです。残念ながら、このプロセスは比較的複雑で、数百行のコードが必要です。これは、boost::python と SWIG の python 全体であり、ボイラープレートをすべて削除します。

于 2012-12-13T22:34:21.733 に答える
1

ネイサンが言ったように、拡張タイプは比較的複雑です。構文が簡単で、定型文を内部で生成するため、Cython を探索したいと考えています。http://docs.cython.org/src/userguide/wrapping_CPlusPlus.html

Niklas がhttps://stackoverflow.com/a/8933819/2156678に投稿した例もご覧ください。

于 2013-03-20T12:38:22.010 に答える