1. 程式人生 > >C# 呼叫 64位C++ OpenCv DLL

C# 呼叫 64位C++ OpenCv DLL

用C#呼叫64位的C++的.dll程式比較方便,但是也讓我踩了坑,這裡來總結下。

首先新建C#應用。

然後在解決方案裡面新建C++的DLL檔案

假設我們要在C#裡面用C++的opencv,我們先在C++的DLL檔案中匯入配置表。

在檢視-》其他視窗-》屬性管理器中開啟屬性管理器。

在下面的這個原始檔中新增如下程式碼。

// DllCpp.cpp : 定義 DLL 應用程式的匯出函式。
//

#include "stdafx.h"
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>

using namespace cv;

extern "C" __declspec(dllexport) void Test()
{
	Mat mat = imread("C:\\Users\\ttp\\Desktop\\picture\\1.jpg");
	imshow("tupian", mat);
	waitKey(0);
}

extern "C" 包含雙重含義,從字面上即可得到:首先,被它修飾的目標是“extern”的;其次,被它修飾的目標是“C”的。而被extern "C"修飾的變數和函式是按照C語言方式編譯和連線的。 __declspec(dllexport)的目的是為了將對應的函式放入到DLL動態庫中。

之後選擇生成

在.cs檔案中加入程式碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;

namespace DLLtest
{
    class Program
    {
        [DllImport(@"C:\Users\ttp\Desktop\DLLtest\x64\Debug\DllCpp.dll")]
        public static extern void Test();

        static void Main(string[] args)
        {
            Test();
        }
    }
}

最後執行輸出圖片。