围绕 C++ 的 C 可调用包装器 class
C-callable wrapper around C++ class
我正在学习围绕 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;
}
包装class/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 语句的包装器 class 中得到了一个。由于某种原因,class 方法似乎无法识别。错误内容为:
error C2228: left of '.GetSum' must have class/struct/union
令我困惑的是,这是从教程中复制和粘贴的,但我的不起作用。我可能缺少什么?
你的意思是:
MyClass myClass(x, y);
而不是
MyClass myClass(int x, int y);
您输入的是声明一个名为 "myClass" 的函数,该函数 returns 是一个 "MyClass" 实例并接受两个整数。您打算通过传递 x 和 y 来实例化一个名为 "myClass" 类型 "MyClass" 的变量。
我正在学习围绕 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;
}
包装class/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 语句的包装器 class 中得到了一个。由于某种原因,class 方法似乎无法识别。错误内容为:
error C2228: left of '.GetSum' must have class/struct/union
令我困惑的是,这是从教程中复制和粘贴的,但我的不起作用。我可能缺少什么?
你的意思是:
MyClass myClass(x, y);
而不是
MyClass myClass(int x, int y);
您输入的是声明一个名为 "myClass" 的函数,该函数 returns 是一个 "MyClass" 实例并接受两个整数。您打算通过传递 x 和 y 来实例化一个名为 "myClass" 类型 "MyClass" 的变量。