一个.dll制作项目名字为:ConsoleApplication5
文件->新建->项目->visual c++->win32控制台->下一步->选.dll和与预编译头->finish,解决方案资源管理器里将得到
点击ConsoleApplication5右键,添加,新建项目,添加一个与项目名相同的.h文件
ConsoleApplication5.h里的内容为:
在ConsoleApplication5.h加入你要让别人使用的函数名,并且函数名前加extern "C" _declspec(dllexport),例如:
在ConsoleApplication5.cpp加入这个函数的实现。
可以再加一个.h文件,只要在.cpp里包含就可以。我是新建了一个yyy.h,在里面定义了一个类,和类的一些方法。在生成.dll之后,可以直接调用这个类。
这样都结束之后,可以直接点击项目,右键,重新生成,在输出窗口中会出现,
ConsoleApplication1.vcxproj -> E:\graduate design\Detection2\x64\Release\ConsoleApplication1.dll
这样的字样,这就是你得.dll生成之后的地方。到那里找生成的.dll
代码:
//"ConsoleApplication5.h"
#pragma once
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
extern "C" _declspec(dllexport) void test01(string g);
//"yyy.h"
#pragma once
extern "C" _declspec(dllexport) class jjkk
{
public:
jjkk();
jjkk(int k)
{
k = 0;
}
int pp(int a,int b);
~jjkk();
private:
int num;
};
jjkk::jjkk()
{
}
int jjkk::pp(int a,int b)
{
return a + b;
}
jjkk::~jjkk()
{}
//"ConsoleApplication5.cpp"
#include "stdafx.h"
#include "yyy.h"
#include "ConsoleApplication1.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
extern "C" _declspec(dllexport) void test01(string g)
{
Mat girl = imread(g); //载入图像到Mat
namedWindow("【1】动漫图"); //创建一个名为 "【1】动漫图"的窗口
imshow("【1】动漫图", girl);//显示名为 "【1】动漫图"的窗口
//-----------------------------------【二、初级图像混合】--------------------------------------
// 描述:二、初级图像混合
//--------------------------------------------------------------------------------------------------
//载入图片
Mat image = imread("dota.jpg", 199);
Mat logo = imread("dota_logo.jpg");
//载入后先显示
namedWindow("【2】原画图");
imshow("【2】原画图", image);
namedWindow("【3】logo图");
imshow("【3】logo图", logo);
// 定义一个Mat类型,用于存放,图像的ROI
Mat imageROI;
//方法一
imageROI = image(Rect(800, 350, logo.cols, logo.rows));
//方法二
//imageROI= image(Range(350,350+logo.rows),Range(800,800+logo.cols));
// 将logo加到原图上
addWeighted(imageROI, 0.5, logo, 0.3, 0., imageROI);
//显示结果
namedWindow("【4】原画+logo图");
imshow("【4】原画+logo图", image);
//-----------------------------------【三、图像的输出】--------------------------------------
// 描述:将一个Mat图像输出到图像文件
//-----------------------------------------------------------------------------------------------
//输出一张jpg图片到工程目录下
imwrite("由imwrite生成的图片.jpg", image);
jjkk p;
cout<<p.pp(3, 4);
waitKey();
}