Innosetup 调用c# dll 和 c# dll的函数导出
2023-12-29 11:34:40
- 目标需求,基于现在安装包脚本。需要在用户安装和卸载成功时。进行数据记录,所以需要调用
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 脚本使用了!
文章来源:https://blog.csdn.net/weixin_38940097/article/details/135283148
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!