Я следую руководству по созданию оболочки вокруг кода 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 должен быть класс / структура / объединение
Что меня озадачивает, так это то, что это копирование и вставка из учебника, но мое не работает. Чего мне не хватать?
Вы имели в виду:
MyClass myClass(x, y);
вместо
MyClass myClass(int x, int y);
То, что вы ввели, объявляет функцию с именем «myClass», которая возвращает экземпляр «MyClass» и принимает два целых числа. Вы хотели создать экземпляр переменной с именем «myClass» типа «MyClass», передав ей x и y.