日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c++创建包含opencv的dll供C,C#调用

發(fā)布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++创建包含opencv的dll供C,C#调用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近做項目,需要將C++算法封裝成dll,給C#調(diào)用,之前沒接觸過C#,現(xiàn)學(xué)一波,只做了dll并用C#測試了下,運行成功。記錄下來過程,供大家參考。
編程環(huán)境:VS2013+opencv2.4.13
步驟:
1.創(chuàng)建C++項目,制作dll.
(1)打開vs,新建->項目->win32控制臺項目


(2)選擇dll,點擊完成

(3)生成了c++項目。默認(rèn)包含幾個cpp和h文件。

(4)打開Win32Project1.cpp文件,編寫如下函數(shù)。OpenCV中包含目錄、庫目錄、鏈接器附加依賴項配置這里不再詳述。

代碼如下:

#include "stdafx.h"
#include "Win32Project2.h"
#include <iostream>
#include <string>
#include <opencv2\opencv.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>using namespace cv;char* _stdcall show(char* name)
{Mat img = imread(name);if (img.empty()){return "can not open";}else{imshow("test", img);waitKey(0);return "open!";}
}

(5)右鍵頭文件文件夾-添加-新建項,創(chuàng)建Win32Project1.h文件

代碼:

#pragma once
#include <iostream>
extern "C" _declspec(dllexport) char * _stdcall show(char* name);

(6)之后就可以生成解決方案了,注意這里選擇的“Debug”模式,平臺是“Win32”。生成后的dll和lib文件在C#項目對應(yīng)文件夾的debug文件夾下(先建立c#項目,一會附圖添加dll和lib)
2.創(chuàng)建c#項目
(1)打開vs,如下設(shè)置,

(2)創(chuàng)建好了之后,需要將第一步生成的dll放到該c#文件夾下,例如c#中我選擇的是“debug”模式,注意平臺也對應(yīng)Win32,如下,將dll放到了文件夾下。

(3)在c#的cs文件中調(diào)用dll,在C#中Program.cs填寫如下代碼

代碼:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;namespace c.demo2
{class Program{[DllImport(@"Win32Project1.dll", EntryPoint = "show", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)]extern  static IntPtr show([MarshalAs(UnmanagedType.LPStr)]string name);static void Main(string[] args){IntPtr name = show("D:\\1.jpg");//圖片路徑string check = Marshal.PtrToStringAnsi(name);Console.WriteLine(check);Console.ReadKey();}}
}


程序運行成功!
參考鏈接
如需制作C++版dll,請參考本人另一篇博客:
參考鏈接2

總結(jié)

以上是生活随笔為你收集整理的c++创建包含opencv的dll供C,C#调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。