Mingw gcc生成windows dll、封装opencv

18 篇文章 0 订阅

    第一步:在我本机电脑生成一个目录存放工程文件E:\Project\test。用notepad++写3个文件

Test.h

#ifndef __TEST__
#define __TEST__

#ifdef __cplusplus
extern "C" {
#endif


__declspec(dllexport) void __stdcall Test();


#ifdef __cplusplus
}
#endif
#endif

Test.cpp

#include "Test.h"
#include <opencv.hpp>

__declspec(dllexport) void __stdcall Test()
{
    IplImage* ipl = cvLoadImage("E:\\123.jpg");
    if(ipl){
        cvSaveImage("e:\\123.bmp", ipl);
        cvReleaseImage(&ipl);
    }
}

makefile

opencv_Include1=./Opencv/include
opencv_Include2=./Opencv/include/opencv
opencv_Include3=./Opencv/include/opencv2

opencv_Lib=./Opencv/lib -lopencv_core2410 -lopencv_highgui2410 -lopencv_imgproc2410

Test.dll:Test.o
	g++ Test.o -L $(opencv_Lib) -shared -o Test.dll

Test.o:Test.h Test.cpp
	g++ -c -w Test.cpp -o Test.o -I $(opencv_Include1) -I $(opencv_Include2) -I $(opencv_Include3)
    
clean:
	rm edit Test.o 

那么现在就需要编译了,首先是安装Mingw,再次安装msys。如图


第二步:点击MSYS。输入 cd "E:\Project\test"



第三步:输入make。按回车键


第四步:查看dll



第五步:思考。为什么Test函数后面有一个@0呢??这是因为用到__stdcall。去掉__stdcall。代码如下:

#ifndef __TEST__
#define __TEST__

#ifdef __cplusplus
extern "C" {
#endif


__declspec(dllexport) void Test();


#ifdef __cplusplus
}
#endif
#endif
#include "Test.h"
#include <opencv.hpp>

__declspec(dllexport) void Test()
{
    IplImage* ipl = cvLoadImage("E:\\123.jpg");
    if(ipl){
        cvSaveImage("e:\\123.bmp", ipl);
        cvReleaseImage(&ipl);
    }
}

再次在MSYS里面执行make。如图



测试demo:https://download.csdn.net/download/sz76211822/10466486

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值