C# 呼叫 64位C++ OpenCv DLL
阿新 • • 發佈:2019-01-13
用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(); } } }
最後執行輸出圖片。