【发布时间】:2015-04-13 07:47:10
【问题描述】:
我正在按照教程创建一个围绕 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作为对您项目的引用? -
@Tumelo:请至少尝试来减少您的问题。在此过程中,您要么自己孤立并解决它(很快就会变得更好更快),或者至少有机会提出一个好问题。我删除了大部分不相关的垃圾。顺便说一句:您应该考虑使用相对包含路径而不是绝对路径。
-
@Deduplicator 谢谢,我将使用相对路径。