gpt4 book ai didi

c# - dllexport 结构指针并返回 uint8_t

转载 作者:太空宇宙 更新时间:2023-11-04 02:22:13 27 4
gpt4 key购买 nike

我正在创建一个要在 C# 应用程序中使用的 C 包装器库。在我的 .c 中,函数定义如下:

__declspec(dllexport) uint8_t aes132h_nonce(struct aes132h_nonce_in_out *param)
{
// do something
return 0;
}

在我的 C# 中,我如何定义函数,它接受一个指向结构的指针并返回一个 uint8_t

    [DllImport("AesHelperLib.dll")]
public static extern uint8_t aes132h_nonce(ref aes132h_nonce_in_out *param);

我是否需要在 c# 中创建具有适当填充和对齐的结构,或者是否有导出结构 aes132h_nonce_in_out 的方法以便我可以在 c# 中使用该结构?另外,如何将返回类型定义为 uint8_t is not a valid type in c#?

最佳答案

Do I need to create the struct with proper padding and alignment in c#

本质上,是的:无法在 C# 中直接使用 C 结构声明,也没有 1:1 映射。请注意,如果您在 DLL 导入中将参数声明为 ref,则不应将其也设为指针。

在某些情况下,例如当只是在 API 调用之间“传递”一个值时,您也可以将参数声明为(在这种情况下,按值传递)IntPtr 并将其内容视为不透明类型。

Also, how to define the return type as uint8_t is not a valid type in c#?

interop best practices说使用最接近的等效 .NET 类型 — 在本例中为 byte

关于c# - dllexport 结构指针并返回 uint8_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56022778/

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