Я следую руководству по созданию оболочки вокруг кода C++, чтобы его можно было вызывать из C#.
Однако при компиляции оболочки возникает ошибка. Заголовок.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' должен быть класс/структура/объединение
Что меня озадачивает, так это то, что это копирование и вставка из учебника, но мой не работает. Что я мог упустить?
.dll
в качестве ссылки на свой проект? - person Greg   schedule 12.02.2015