我想包装一个复杂的c ++类,它使用opencv对象和c ++ / cli在c#和vb中使用。我正在使用Visual Studio 2015.我正在使用OpenCV库的x64版本并编译为x64。
以下是一个小测试类的header.h文件,仅作为示例:
#pragma once
#include <vector>
#include "opencv2/opencv.hpp"
using namespace std;
class compC
{
public:
compC(int * pInt, int arrSize);
int sumArray();
private:
vector<int> vec;
cv::Mat img;
};
这将被编译为.32b文件的win32应用程序,没有任何问题。
示例包装类(wrapper.h)如下所示:
#pragma once
#include "../ConsoleApplication1/header.h"
#include "../ConsoleApplication1/body.cpp"
using namespace System;
namespace WrapperLibrary {
public ref class WrapperClass
{
public:
WrapperClass(int * pInt, int arraySize);
int getSum();
private:
compC * pcC;
int sum;
};
}
第二个类将被编译为带有/ clr的dll(作为c ++ / cli项目)。
首先我收到一个错误,即无法找到opencv.hpp,并且必须将opencv的include目录添加到包装器项目中。但我无法编译它并获得很多错误,主要是指向与opencv-mat对象相关的链接问题“未解决的外部问题......”。
如果删除行
#include "opencv2/opencv.hpp"
和
cv::Mat img;
在测试类(header.h)中一切都会好的。
我做错了什么?如何用c ++ / cli包装那些c ++类?