C-вызываемая обертка вокруг класса C ++

Я следую руководству по созданию оболочки вокруг кода 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();
}

Я получаю в классе обертки прямо в инструкции возврата. Метод класса, похоже, не распознается по какой-то причине. Ошибка гласит:

ошибка C2228: слева от .GetSum должен быть класс / структура / объединение

Что меня озадачивает, так это то, что это копирование и вставка из учебника, но мое не работает. Чего мне не хватать?

1

Решение

Вы имели в виду:

MyClass myClass(x, y);

вместо

MyClass myClass(int  x, int y);

То, что вы ввели, объявляет функцию с именем «myClass», которая возвращает экземпляр «MyClass» и принимает два целых числа. Вы хотели создать экземпляр переменной с именем «myClass» типа «MyClass», передав ей x и y.

5

Другие решения


По вопросам рекламы [email protected]