gpt4 book ai didi

c# - 从 C DLL 到 .NET 的接口(interface)

转载 作者:行者123 更新时间:2023-11-30 15:13:04 25 4
gpt4 key购买 nike

我有一个用 C 编写的遗留 DLL,我想从 C# .NET 应用程序调用它。问题是 C DLL 的 DLL 接口(interface)相当复杂。它是这样的:

__declspec(dllexport) void __stdcall ProcessChunk(
void *p_prochdl,
const BIG_INPUT_STRC *p_inparams,
BIG_OUTPUT_STRC *p_outparams
);

BIG_INPUT_STRC/BIG_OUTPUT_STRC 包含各种各样的东西……指向缓冲区数组的指针、枚举参数、整数参数等。简而言之,它们很复杂。

第一个问题:是否有一种简单的方法可以将DLL头文件中包含的所有结构信息都获取到C#类中,或者您是否需要将所有内容复制并粘贴到C#中并重新定义它?这似乎是多余的。

与此相关,从 C# 将结构传递到非托管 DLL 的正确方法是什么?

最后,是否有示例说明如何将缓冲区数组从 C# 正确传递到非托管 DLL?或者,如何将二维数组传递到 DLL 中?

谢谢,-格雷格

最佳答案

在 C# 中使用 P/Invoke 来完成这种软操作非常简单。

我相信您将不得不在 C# 中手动定义数据结构。

我建议您看看这个 MSDN article关于这个问题

关于c# - 从 C DLL 到 .NET 的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/494376/

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