我需要从一个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# ×1