一、C++创建动态链接库
1、在VS项目中,分别创建.h文件和.cpp文件,其中,.h文件用于声明方法,.cpp文件用于编写与方法对应的函数内容。
.h文件内容如下:
#pragma once
#include <opencv2/opencv.hpp>
using namespace cv;
extern"C" __declspec(dllexport)Point2f Mytriangle(Mat & inputImage1);
extern"C" __declspec(dllexport)Point2f Mysquare(Mat & inputImage);
extern"C" __declspec(dllexport)Point2f Mycircle(Mat & inputImage);
其中,extern"C" __declspec(dllexport)用于输出dll文件;
Point2f Mycircle(Mat & inputImage);是我自己自定义的声明函数
.cpp文件内容如下:
Point2f Mytriangle(Mat& inputImage1)
{
//函数内容
XXXX
}
2、项目-属性-配置属性-常规-配置类型选择.dll
3、最后你就可以在你自己的项目文件路径-X64-Debug中看到.dll文件和.lib文件了
注意你的平台是X64还是X86的,最引用.dll文件的时候,平台必须与生成dll文件的平台一致,我生成.dll文件的平台是X64,那在引用的时候也必须是X64平台。
二、C++调用.dll文件
首先在项目文件位置处创建两个空文件夹include和lib,其中dlltest是我的项目所在。改成你自己的即可。
2、将.h文件复制到include文件夹中
将.dll文件和.lib文件复制到lib文件夹中
3、为了防止报错,建议再加一步,将.dll文件额外复制到项目的.exe文件所在位置。
即新项目-X64-Debug文件,其中dlltest是我的新项目
4、配置新项目环境。
(1)打开项目-属性-VC++目录-包含目录,将创建的include文件夹的路径添加进包含目录中
(2)再配置库目录,将创建的lib文件夹路径添加进库目录中
(3)配置链接器,将.lib文件名字添加进附加依赖项中。
最后头文件引用include文件夹中对用的.h文件即可
三、C#调用.dll文件
1、注意自己的平台是哪一个,必须将平台属性与.dll文件的平台属性调为一致。
2、将.dll文件复制进C#新项目-bin-X64-Debug中。
3、在程序里引用.dll文件
(1)首先添加对应的命名空间
using System.Runtime.InteropServices;
System.Runtime.InteropServices;是专门用于引入.dll文件的命名空间
(2)在程序中引入你想用的函数即可
[DllImport("Kinect.dll")]
private extern static int OpenKinect();
private extern static是引入函数
int OpenKinect()是我自己编写的函数。将这个函数换成你自己的即可。