Innosetup 调用c# dll 和 c# dll的函数导出

2023-12-30 21:36

本文主要是介绍Innosetup 调用c# dll 和 c# dll的函数导出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  • 目标需求,基于现在安装包脚本。需要在用户安装和卸载成功时。进行数据记录,所以需要调用c#dll

主要涉及到的知识点

  • 需要理解脚本的文件使用机制
  • 脚本的文件dll加载,和dll的调用
  • c# dll的制作,和工具的使用

下面具体介绍

脚本的文件dll加载,和dll的调用


[Files]
//下面是用3F/DllExport 工具 把 c# dll 处理好了,这里引用到脚本里面来
Source: "Test_ClassLibraryAdd.dll"; DestDir: "{app}"[Code]
procedure Test(a:Integer;b:Integer);
external 'Test@files:Test_ClassLibraryAdd.dll stdcall delayload'; //注意:需要使用 stdcall delayload 延迟加载,另外需要使用x86平台编译的dll//在需要的地方进行调用  Test(1,2);

c# dll的制作,和工具的使用

  • 首先创建一个 .net 库,然后在Nuget 安装 DllExport
  • 安装完成后,会弹出下面的窗口,窗口弹出后。先关闭VS项目。然后安装下图说明进行操作

在这里插入图片描述

注意:在点击Apply按钮前需要注意根据项目的要求勾选编译的目标平台(一般我是选择86+64)

在这里插入图片描述

完成上面操作后,在重新打开项目。进行代码编写,编写完成后在需要导出的函数上面添加[DllExport("XXXXX", CallingConvention = CallingConvention.StdCall)]

示例代码如下:

namespace Test_ClassLibraryAdd
{/************************************************************创建者:Lv*创建时间: 2023/12/28 21:49:27*文件功能描述:*修改说明:************************************************************/public class TestAdd{[DllExport("Test", CallingConvention = CallingConvention.StdCall)]public static int Test(int a, int b){ return a + b;}}
}

需要注意一定要使用CallingConvention = CallingConvention.StdCall,最后生成项目,会在输出目录输出x86 和 x64 dll文件。

使用工具查看dll 的导出函数:

  • 在当前你的VS项目打开VS自带的命令行工具,如下图:

在这里插入图片描述

  • 使用cmd命令行`dumpbin /exports “xxxxxxxxx” xxx请替换为你本地编译好dll的绝对路径
    如图所示:
    在这里插入图片描述
    这样就可以查看dll的导出函数。经过上面的操作,c# 制作的dll就可以给innosetup 脚本使用了!

这篇关于Innosetup 调用c# dll 和 c# dll的函数导出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/554075

相关文章

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

python中的高阶函数示例详解

《python中的高阶函数示例详解》在Python中,高阶函数是指接受函数作为参数或返回函数作为结果的函数,下面:本文主要介绍python中高阶函数的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录1.定义2.map函数3.filter函数4.reduce函数5.sorted函数6.自定义高阶函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

前端导出Excel文件出现乱码或文件损坏问题的解决办法

《前端导出Excel文件出现乱码或文件损坏问题的解决办法》在现代网页应用程序中,前端有时需要与后端进行数据交互,包括下载文件,:本文主要介绍前端导出Excel文件出现乱码或文件损坏问题的解决办法,... 目录1. 检查后端返回的数据格式2. 前端正确处理二进制数据方案 1:直接下载(推荐)方案 2:手动构造

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型