小编mat*_*att的帖子

如何使用平台调用来编组void*

我需要从一个dll中包含的C api调用一个函数.功能原型如下......

int func( char* name, void* value );
Run Code Online (Sandbox Code Playgroud)

其中指针值的内容可以引用依赖于传递名称的任何类型.我不确定如何设置Dll inport来正确地编组这个空洞*.我一直在尝试使用IntPtr,这似乎适用于值为int但我无法正确检索浮点值等值.

我想尝试导入这样的功能......

[DllImport("dllname.dll", CharSet = CharSet.Ansi)]
public static extern int func( string name, ref IntPtr value );
Run Code Online (Sandbox Code Playgroud)

请注意,值是输出.指向任何类型值的指针,即已知类型值(调用者已知)的全局内存区域中的地址.在ac prog中,调用者将被期望将此void*转换为所需类型并取消引用以获得存储在那里的实际值.到目前为止给出的答案似乎是基于一个假设,即函数会将结果写入传入的指针位置.我的错误,因为我没有太具体.抱歉.C#不是我的包,我甚至都不知道IntPtr是否可以去这里......

c#

8
推荐指数
2
解决办法
6119
查看次数

标签 统计

c# ×1