nodejs调用delphi编写的dll】的更多相关文章

公司的业务需要,nodejs要读取文件版本号. 同事要求我用delphi编写dll,以供nodejs调用,结果通过json返回. delphi代码如下: function GetFileInfo(APath: PAnsiChar): PAnsiChar; var sPath: string; FInfoSize, Temp, Len: Cardinal; InfoBuf: Pointer; TranslationLength: Cardinal; TranslationTable: Pointe…
技术实现 如何逐步实现动态库的加载,类型的匹配,动态链接库函数导出的定义,参考下面宏定义即可: #define LIBEXPORT_API extern "C" __declspec(dllexport) 第一步,我先从简单的调用出发,定义了一个简单的函数,该函数仅仅实现一个整数加法求和: LIBEXPORT_API int mySum(int a,int b){ return a+b;} C# 导入定义: public class RefComm { [DllImport("…
介绍 给大家介绍一个最新的访问本机代码的 Java 框架 —JNA . JNA(Java Native Access) 框架是一个开源的 Java 框架,是 SUN 公司主导开发的,建立在经典的 JNI 的基础之上的一个框架. JNA 项目地址: https://jna.dev.java.net/ 非常强大.易用,功能上类似与 .NET 的 P/Invoke . 不堪回首的 JNI 我们知道,使用 JNI 调用 .dll/.so 共享类库是非常非常麻烦和痛苦的. 如果有一个现有的 .dll/.s…
Delphi代码 unit UnitDll; interface uses StrUtils, SysUtils, Dialogs; function DoBusinessWide(pvData: PWideChar): PWideChar; stdcall; implementation function DoBusinessWide(pvData: PWideChar): PWideChar; stdcall; var lvData: WideString; begin ShowMessag…
Delphi代码 unit UnitDll; interface uses StrUtils, SysUtils, Dialogs; function DoBusinessAnsi(pvData: PAnsiChar): PAnsiChar; stdcall; implementation function DoBusinessAnsi(pvData: PAnsiChar): PAnsiChar; stdcall; var lvData: AnsiString; begin ShowMessag…
参数整数没有问题,但是如果是字符串,要注意几个细节. 记录如下: 1.Delphi定义函数的时候,字符串参数需要使用PChar类型 2.Go传递参数的时候要将字符串转成UTF16的指针,接收的时候采用uint16的切片. dll := syscall.MustLoadDLL("Encryptdll.dll") defer syscall.FreeLibrary(dll.Handle) f1 := dll.MustFindProc("test06") fmt.Prin…
Delphi与JAVA基本数据类型对比 类型 Delphi关键字 JAVA关键字 字节 备注 范围 整型 Shortint byte 1 有符号8位 -128..127 Byte 1 无符号8位 0 .. 255 Smallint short 2 有符号16位 -2^15..2^15-1 Word 2 无符号16位 0 .. 65535 Longint int 4 有符号32位 -2^63..2^63-1 Longword 4 无符号32位 0 .. 4294967295 Integer int…
1.前言: 最近接手了一个项目需要和Delphi语言编写的一个系统进行一些接口的对接,数据在传输过程中采用Des加密方式,因为Delphi 平台的加密方式和C#平台的加密方式不互通,所以采用的方式是C#通过调用Delphi编写好的Dll通过C#中的DllImport进行数据的加解密,其实原本是很简单的一个过程,在中间遇到了一些坑,希望能够分享这次经验,能够避免更多的人踩到这个坑: 2.后续 C#和delphi平台对接的接口 Delphi 有两个方法: Estr加密,参数1:加密参数,参数2:秘钥…
    C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int __declspec(dllexport) test(const int N) { return N+10; } 对应的C#代码为: C# Code Copy Code To Clipboard [DllImport("test.dll", EntryPoint = "#1&q…
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C#中使用这三个函数. [DllImport("Kernel32")] public static extern int GetProcAddress(int handle, String funcname); [DllImport("Kernel32")] public…