Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# dllexport结构指针和返回的uint8\u t_C#_C_Visual C++_Dllexport - Fatal编程技术网

C# dllexport结构指针和返回的uint8\u t

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

我正在创建一个用于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 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