名前空間のC ++クラスをCythonに含めるにはどうすればよいですか?

アーロン・デ・ウィント

Cythonを使用してPythonで使用できるように、一連のC ++クラスのラップを作成しようとしています。これは私がこれまでに試したことです。

cdef extern from "HilClass.h" namespace "acro":
    cdef cppclass _HilClass "HilClass":
        void start()

cdef class HilClass:
    cdef _HilClass *ptr

    cpdef start(self):
        self.ptr.start()

それはコンパイルされません。以下のエラーが表示されますが、クラスが見つからないことが原因の可能性があることがわかりました。そのため、ヘッダーとソースが適切に含まれていることを確認した後、Cythonによって生成された.cppを調べました。検索しましacroたが見つかりませんでした。コードのどこにも言及されていません。

error C2143: syntax error: missing ';' before '*'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
... (more warning and errors related to HilClass)

これは、2行目をに変更することにしたときです。

    cdef cppclass _HilClass "acro::HilClass":

これはコンパイルされます。しかし、これは私が見つけたどの例/チュートリアルでも行われていませんでした。だから私の質問は、私は何かが足りないので、私の「回避策」は確実に機能し続けるだろうということです。

注:PythonまたはCython内からこのクラスのインスタンスを作成することに興味はありません。必要なのは、HilClassポインターをラップアラウンドすることだけです。

編集:これは「HilClass.h」内のコードです。'acrophobe.h'には、いくつかのクラス前方宣言、列挙型typedef unint#_t ####、、があり、stdintが含まれています。

#include "acrophobe.h"

namespace acro {
    class HilClass
    {
    public:
        HilClass(AcrophobeClass *acro_ptr);
        ~HilClass();

        HILSocketClass *sck;

        void start();
        void acrophile_iteration(char dest, lbp::PortID_t PortID);

        void set_activity_iteration_start(bool s);
        // More of these set_activity functions
        void set_activity_logging(bool s);


    private:
        AcrophobeClass *acro;

    };
}
JJハカラ

あなたがしたように定義する必要があります

cdef cppclass _HilClass "acro::HilClass"

acro :: HilClassにエイリアス_HilClassを指定しているためです定義するとどうなるかをテストできます

cdef cppclass HilClass:
    void start()

その後(クラス名は単なる例です)

cdef class PyHilClass:
    cdef HilClass * ptr

あなたのソリューションが信頼できない理由はわかりません。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

C#クラスの名前空間を見つけるにはどうすればよいですか?

分類Dev

Visual Studio c ++特定のクラス/メソッドに含まれる名前空間を見つけるにはどうすればよいですか

分類Dev

Rubyで名前空間クラスの定義を解除するにはどうすればよいですか?

分類Dev

Swiftクラスの名前空間を変更するにはどうすればよいですか?

分類Dev

C ++の名前空間内でクラスをプライベートにするにはどうすればよいですか?

分類Dev

react tsxインポートに名前空間を含めるにはどうすればよいですか?

分類Dev

名前空間情報を含めてXML要素を作成するにはどうすればよいですか?

分類Dev

カスタム名前空間にクラスを追加するにはどうすればよいですか?

分類Dev

名前空間が含まれている場合、SWIGにC ++ヘッダーを%含めるにはどうすればよいですか?

分類Dev

Listクラスにすべてのタイプを含めるにはどうすればよいですか?

分類Dev

名前空間内にクラスを作成するにはどうすればよいですか?

分類Dev

XML C#で複数の名前空間を取得するにはどうすればよいですか?

分類Dev

クラスの名前を含む文字列を取得するにはどうすればよいですか?

分類Dev

シェル名前空間の名前でSHCreateItemFromParsingNameを使用するにはどうすればよいですか?

分類Dev

クラス内に選択可能な名前空間のような機能を実装するにはどうすればよいですか?

分類Dev

gerritの下にカスタム名前空間を作成するにはどうすればよいですか?

分類Dev

名前空間とクラス名をリファクタリングするようにPHPStormに指示するにはどうすればよいですか?

分類Dev

プロセスをある名前空間から別の名前空間に移動するにはどうすればよいですか?

分類Dev

WP8.1アプリでReflectionを使用して名前空間のすべてのクラスを取得するにはどうすればよいですか?

分類Dev

Cython:cdefクラスの属性を設定するにはどうすればよいですか?

分類Dev

JavaScriptの名前空間とクラスを適切に設定するにはどうすればよいですか?

分類Dev

JAXB:異なる名前空間に属するようにクラスに注釈を付けるにはどうすればよいですか?

分類Dev

ファイル名にスラッシュを含めるにはどうすればよいですか?

分類Dev

C ++で名前空間を適切に使用するにはどうすればよいですか?

分類Dev

C ++で名前空間を適切に使用するにはどうすればよいですか?

分類Dev

C#でXPathに名前空間を追加するにはどうすればよいですか?

分類Dev

特定のクラスをコードカバレッジに含めないようにするにはどうすればよいですか?(Java)

分類Dev

クエリ数式に複数のラベルを含めるにはどうすればよいですか?

分類Dev

「detail」という名前のすべての(サブ)名前空間をdoxygenにスキップさせるにはどうすればよいですか?

Related 関連記事

  1. 1

    C#クラスの名前空間を見つけるにはどうすればよいですか?

  2. 2

    Visual Studio c ++特定のクラス/メソッドに含まれる名前空間を見つけるにはどうすればよいですか

  3. 3

    Rubyで名前空間クラスの定義を解除するにはどうすればよいですか?

  4. 4

    Swiftクラスの名前空間を変更するにはどうすればよいですか?

  5. 5

    C ++の名前空間内でクラスをプライベートにするにはどうすればよいですか?

  6. 6

    react tsxインポートに名前空間を含めるにはどうすればよいですか?

  7. 7

    名前空間情報を含めてXML要素を作成するにはどうすればよいですか?

  8. 8

    カスタム名前空間にクラスを追加するにはどうすればよいですか?

  9. 9

    名前空間が含まれている場合、SWIGにC ++ヘッダーを%含めるにはどうすればよいですか?

  10. 10

    Listクラスにすべてのタイプを含めるにはどうすればよいですか?

  11. 11

    名前空間内にクラスを作成するにはどうすればよいですか?

  12. 12

    XML C#で複数の名前空間を取得するにはどうすればよいですか?

  13. 13

    クラスの名前を含む文字列を取得するにはどうすればよいですか?

  14. 14

    シェル名前空間の名前でSHCreateItemFromParsingNameを使用するにはどうすればよいですか?

  15. 15

    クラス内に選択可能な名前空間のような機能を実装するにはどうすればよいですか?

  16. 16

    gerritの下にカスタム名前空間を作成するにはどうすればよいですか?

  17. 17

    名前空間とクラス名をリファクタリングするようにPHPStormに指示するにはどうすればよいですか?

  18. 18

    プロセスをある名前空間から別の名前空間に移動するにはどうすればよいですか?

  19. 19

    WP8.1アプリでReflectionを使用して名前空間のすべてのクラスを取得するにはどうすればよいですか?

  20. 20

    Cython:cdefクラスの属性を設定するにはどうすればよいですか?

  21. 21

    JavaScriptの名前空間とクラスを適切に設定するにはどうすればよいですか?

  22. 22

    JAXB:異なる名前空間に属するようにクラスに注釈を付けるにはどうすればよいですか?

  23. 23

    ファイル名にスラッシュを含めるにはどうすればよいですか?

  24. 24

    C ++で名前空間を適切に使用するにはどうすればよいですか?

  25. 25

    C ++で名前空間を適切に使用するにはどうすればよいですか?

  26. 26

    C#でXPathに名前空間を追加するにはどうすればよいですか?

  27. 27

    特定のクラスをコードカバレッジに含めないようにするにはどうすればよいですか?(Java)

  28. 28

    クエリ数式に複数のラベルを含めるにはどうすればよいですか?

  29. 29

    「detail」という名前のすべての(サブ)名前空間をdoxygenにスキップさせるにはどうすればよいですか?

ホットタグ

アーカイブ