1

C# から呼び出すことができるように、C++ コードのラッパーを作成するチュートリアルに従っています。
ただし、ラッパーのコンパイル中にエラーが発生します。Header.h

class MyClass{
    public:
        MyClass(int x, int y);
        double GetSum();
    private:
        int x_;
        int y_;
};

以下はソースファイル(body.cpp)です

#include  "Header.h"

MyClass::MyClass(int x, int y)
{
    x = 8;
    y = 8;
}

double MyClass::GetSum()
{
    int r = x_ + y_;
    return r;
}

ラッパー クラス/dll は次のとおりです。

#include "C:\Users\tumelo\Documents\Visual Studio 2012\Projects\Emgu\MyClassCpp\MyClassCpp\Header.h"
#include "C:\Users\tumelo\Documents\Visual Studio 2012\Projects\Emgu\MyClassCpp\MyClassCpp\Body.cpp"

//for the function you want made avaible from the dll
    extern "C" __declspec(dllexport) double GetResults(int x, int y)
    {
        //create an instance of the class 
        MyClass myClass(int  x, int y);
        return myClass.GetSum(); 
    }

return ステートメントでラッパー クラスを取得します。クラスメソッドがなぜか認識されていないようです。エラーは次のとおりです。

エラー C2228: '.GetSum' の左側にはクラス/構造体/共用体が必要です

私を困惑させているのは、これがチュートリアルからコピーして貼り付けていることですが、私のものは機能しません。何が欠けている可能性がありますか?

4

1 に答える 1

5

あなたが意味したのは:

MyClass myClass(x, y);

それ以外の

MyClass myClass(int  x, int y);

入力したのは、「MyClass」インスタンスを返し、2 つの整数を取る「myClass」という名前の関数を宣言することです。x と y を渡すことによって、タイプ「MyClass」の「myClass」という名前の変数をインスタンス化するつもりでした。

于 2015-02-12T14:22:32.073 に答える