gpt4 book ai didi

c# - 从 C++ DLL 获取 char * 到 C# 应用程序

转载 作者:行者123 更新时间:2023-11-28 02:17:29 25 4
gpt4 key购买 nike

我在 C++ DLL 中导出了函数:

extern "C" int _stdcall info(int aError, char * description, int *aLen)

尝试从 C# 应用程序调用它。

声明:

[DllImport("mydll.dll", CallingConvention = CallingConvention.StdCall)] public static extern int info(int aError,   StringBuilder description, ref int length);

调用:

StringBuilder buffer = new StringBuilder();
fr = info(5, buffer, ref 256);

从第一个角度来看,这似乎可行。但它真的安全吗?我的意思是 StringBuilder 是否会始终管理来自 infobuffer 变量的字符串的足够内存?

我在声明中写了StringBuilder description,我应该添加ref吗?

最佳答案

I mean will StringBuilder always manage enough memory for string that comes from info to buffer variable?

您应该始终使用获取容量的构造函数来指定 StringBuilder 的初始容量:

int size = 256;
StringBuilder buffer = new StringBuilder(256);
fr = info(5, buffer, ref size);

关于c# - 从 C++ DLL 获取 char * 到 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33628690/

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