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;
}

运行结果如下:

原文地址:https://www.cnblogs.com/wllwqdeai/p/10981354.html

时间: 2024-10-09 18:38:36

DLL发布 matlab代码发布的相关文章

【分享】Matlab R2015a 发布啦!

本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Matlab和C#混合编程文章目录:http://www.cnblogs.com/asxinyu/p/4329753.html Matlab还是一如既往的每年2个版本的发布速度.2015年3月R2015a (版本 8.5) 正式发行.在新版本中,带有四个新的工具箱以及79个产品进行的更新.MATLAB 2015a 中的许多新功能都是在 R2014b 的功能基础上升级而来的,其中

代码发布

代码发布系统 腾讯(蓝鲸) http://bk.tencent.com Murder(推特)  基于管理工具[capistrano]+比特流[bittornado]                             Ruby                  python 代码发布流程 l 程序员开发 l 合并代码 l 发布 --编译 --非编译 --推送(扩展)到指定服务器  注册事件       在互联网产品的发布过程中也较多采用此种发布方式:产品的发布过程不是一蹴而就,而是逐步扩大使

如何将松散的dll打包进需要发布的exe

我们需要发布的exe文件很多时候都可能会依赖于一堆松散的dll,如果想在发布的时候只提供exe文件,而不想把一大堆dll一起放在和exe同一个文件夹下,是有方法的,该方法由CLR via C#作者提出,我在实践的过程中遇到的几点问题,现在记录下总体的流程和该注意的事项. 一.新建需要使用的类库: 1.打开VS,新建类库,使用默认的ClassLibrary1名称. 2.在Class1中添加一个公开的方法:HelloWrold,并且返回一个字符串.   二.以Winform为例来写个exe程序. 1

Spring基于事件驱动模型的订阅发布模式代码实例详解

代码下载地址:http://www.zuidaima.com/share/1791499571923968.htm 原文:Spring基于事件驱动模型的订阅发布模式代码实例详解 事件驱动模型简介 事件驱动模型也就是我们常说的观察者,或者发布-订阅模型:理解它的几个关键点: 首先是一种对象间的一对多的关系:最简单的如交通信号灯,信号灯是目标(一方),行人注视着信号灯(多方): 当目标发送改变(发布),观察者(订阅者)就可以接收到改变: 观察者如何处理(如行人如何走,是快走/慢走/不走,目标不会管的

自动化代码发布系统实现

日常运维问题 在我日常运维工作中,代码发布可能是最普遍的一项工作之一,尤其是网页代码的更新,碎片化发布需求非常频繁.在前期开发人员比较少时,还可以由自己来上服务器通过脚本来发布代码.但随着公司项目的增多,更多的开发人员加入到公司,发布代码需求开始增多,这就占用了我大部分时间,经常的被打断其它工作来发布代码,非常地不爽,然后开始想解决方法. 尝试解决问题 当然,发布代码肯定是运维的职责之一了,但频繁的发布导致运维大部分时间浪费在重复的操作上,非常的不值得.基于此,开始限制代码发布频率,要求把不是很

matlab 程序发布

将matlab程序发布为可执行程序包 说明,这种可执行程序包可以在没有安装matlab的计算机上运行. 1. 打开Applicaiton Compler 如果下拉列表中没有这个APPLICATIONDEPLOYMENT的话,可能是没有安装此组件.请通过添加Addons的方式,或者利用Matlab的安装程序安装. 在matlab 命令窗口中可以输入 deploytool 打开Application Compiler窗口. 2. 添加相关文件,并给出描述. 在打开的Application Compi

测试代码发布到博客效果(Windows Live Writer发布)

测试代码发布到博客效果(Windows Live Writer发布) public class SwitchCase { /** * 1.switch后面的表达式为常量表达式,类型只能是可以转化为int.enum(1.6+).String(1.7+)的类型 * 2.可以转化为int类型的数据类型有:byte.short.int.char * 3.boolean类型的数据类型推荐用if else,java中不支持使用 * * */ public static int getAge(String n

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

wcf之四代码发布服务

Wcf之四(代码创建服务及客户端) 简述 在开发WCF程序时,如何选择一个适合的绑定对于消息传输的可靠性,传输模式是否跨进程.主机.网络,传输模式的支持.安全性.性能等方面有着重要的影响. 这里列举些 绑定名称 用途描述 版本 basicHttpBinding 支持基于WS-I Basic Profile 1.1规范的Web Service,主要支持早期的Web服务. 3.0/3.5 wsHttpBinding 基于WS*的高级Web Service 3.0/3.5 wsDualHttpBind