如何使用带有c ++ / cli的opencv对象包装c ++类

时间:2016-03-18 17:27:19

标签: visual-studio opencv c++-cli wrapper

我想包装一个复杂的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 ++类?

0 个答案:

没有答案