C# dllexport结构指针和返回的uint8\u t
我正在创建一个用于c#应用程序的c包装器库。在my.c中,函数定义为:C# dllexport结构指针和返回的uint8\u t,c#,c,visual-c++,dllexport,C#,C,Visual C++,Dllexport,我正在创建一个用于c#应用程序的c包装器库。在my.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 ui
__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#中创建具有适当填充和对齐的结构,或者是否有方法在输入输出时导出该结构,以便在c#中使用该结构?另外,如何将返回类型定义为uint8_t
在c#中不是有效的类型
我是否需要在c中创建具有适当填充和对齐的结构#
本质上,是的:没有直接在C#中使用C结构声明的方法,也没有1:1映射。请注意,如果将DLL导入中的参数声明为ref
,则不应将其设置为指针
在某些情况下,例如,在API调用之间“传递”值时,也可以将参数声明为(在本例中,传递值)IntPtr
,并将其内容视为不透明类型
另外,如何将返回类型定义为uint8_t
在c#中不是有效的类型
用户希望使用最接近的Equivialent.NET类型—在本例中为byte