Tum*_*elo 1 c++ wrapper extern-c
我正在按照教程创建一个围绕C++代码的包装器,以便可以从C#调用它.
我编译包装器时遇到错误.Header.h
class MyClass{
public:
MyClass(int x, int y);
double GetSum();
private:
int x_;
int y_;
};
Run Code Online (Sandbox Code Playgroud)
以下是源文件(body.cpp)
#include "Header.h"
MyClass::MyClass(int x, int y)
{
x = 8;
y = 8;
}
double MyClass::GetSum()
{
int r = x_ + y_;
return r;
}
Run Code Online (Sandbox Code Playgroud)
包装类/ 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();
}
Run Code Online (Sandbox Code Playgroud)
我在return语句中得到了一个包装类.由于某种原因,似乎没有认识到类方法.错误如下:
错误C2228:'.GetSum'的左边必须有class/struct/union
让我感到困惑的是,这是复制和粘贴的教程,但我的工作不起作用.我能错过什么?
你的意思是:
MyClass myClass(x, y);
Run Code Online (Sandbox Code Playgroud)
代替
MyClass myClass(int x, int y);
Run Code Online (Sandbox Code Playgroud)
你输入的是声明一个名为"myClass"的函数,它返回一个"MyClass"实例,并取两个整数.你的意思是通过传递x和y来实例化一个名为"myClass"的类型为"MyClass"的变量.