DLL发布 matlab代码发布
Posted wllwqdeai
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DLL发布 matlab代码发布相关的知识,希望对你有一定的参考价值。
https://blog.csdn.net/alansss/article/details/81320548
最近需要将写好的matlab代码转成基于OpenCV的代码,然后再封装成dll进行发布。一开始直接看基于OpenCV的dll生成,但是都不太成功,故而先试试没有OpenCV的dll生成。
主要参考了以下两个网页:
VS2013生成dll及动态调用:
https://blog.csdn.net/liu_matthew/article/details/55804710
vs 无法将参数 1 从“const char *”转换为“LPCWSTR” 解决办法:
https://blog.csdn.net/u011394598/article/details/80536753
第一步:文件->新建->项目->win32控制台应用程序 项目名称:DLLGenerator
应用程序类型:DLL 附加项目:空项目
第二步:在创建的dll工程中编写自己需要编译成dll的函数cpp和头文件h
dll.h
#ifndef DLL_H #define DLL_H //h文件 int Add(int a, int b); int Mul(int c, int d); #endif
dll.cpp
#include "DLL.h" //cpp文件 int Add(int a, int b) return a + b; int Mul(int c, int d) return c * d;
第三步:建立dll源文件dllmain.cpp,用来定义应用程序的入口点
dllmain.cpp
// dllmain.cpp : 定义 DLL 应用程序的入口点。 #include <windows.h> BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) switch (ul_reason_for_call) case DLL_PROCESS_ATTACH: case DLL_THREAD_ATTACH: case DLL_THREAD_DETACH: case DLL_PROCESS_DETACH: break; return TRUE;
第四步,建立源文件Source.def
LIBRARY "DLLGenerator" EXPORTS Add @1 Mul @2LIBRARY
第五步:点击编译生成解决方案,显示生成完成。此时debug目录下就会出现.dll文件和.lib文件
VS2013静态使用动态链接文件(使用端)
由于很多时候我们没有lib文件和h文件,我们可以使用以下方式。
新建一个win32控制台应用程序的空项目,添加cpp文件,并在程序中加入需要调用的dll文件的路径:
#include<iostream> #include<Windows.h> #include<time.h> typedef int(*Dllfun)(int, int); using namespace std; int main() Dllfun f1,f2; HINSTANCE hdll; hdll = LoadLibrary("E:\\\\Code\\\\C\\\\DLLGenerator\\\\Debug\\\\DLLGenerator.dll"); //此处报错的话,右键选择项目->属性->常规->字符集(选择多字节就ok) if (hdll == NULL) FreeLibrary(hdll); f1 = (Dllfun)GetProcAddress(hdll, "Add"); f2 = (Dllfun)GetProcAddress(hdll, "Mul"); if (f1 == NULL) FreeLibrary(hdll); int a = f1(4, 10);//加法 int b = f2(4, 10);//乘法 cout <<"4+10=" << a << endl; cout << "4*10=" << b << endl; FreeLibrary(hdll); return 0;
运行结果如下:
以上是关于DLL发布 matlab代码发布的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有matlab的labview中使用matlab源代码?