gpt4 book ai didi

delphi - 如何在 Delphi 中声明这个 dll 方法?

转载 作者:行者123 更新时间:2023-12-03 18:34:08 25 4
gpt4 key购买 nike

我在 DLL 中有一个函数(c 头文件是):

int my_c_function(
const int cnames[10], const char *delim, size_t delim_size,
char *buffer, size_t *buffersize);

我试过了
function my_c_function(cnames: Array of integer;
const delim : PAnsiChar;
delim_size : integer;
buffer : array of Byte;
BufferSize: integer): integer; cdecl;

implementation

function my_c_function(cnames: Array of integer;
const delim : PAnsiChar;
delim_size : integer;
buffer : array of Byte;
BufferSize: integer): integer; cdecl; external 'mydll.dll';

但是当我尝试调用该函数时它崩溃了。

但以下 C# 导入工作正常...
[DllImport("mydll.dll", CharSet = CharSet.Ansi,CallingConvention =CallingConvention.Cdecl)]
public static extern int my_c_function(int[] cnames, string delim, int delim_size, StringBuilder buffer, ref int BufferSize);

有任何想法吗?

是我需要在 Delphi 中初始化 Buffer 和 BufferSize 的方式吗?

最佳答案

"Array of"是 Delphi 类型,与 C 数组或指针不兼容。试试这个,看看它是否有效:

type
TIntArray10 = Array [0..9] of integer;

function my_c_function(cnames: TIntArray10;
const delim : PAnsiChar;
delim_size : cardinal;
buffer : PByte;
var BufferSize: cardinal): integer; cdecl;

关于delphi - 如何在 Delphi 中声明这个 dll 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3518041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com