[英]Calling wrapped C++ DLL method from C#: passing addresses of integral variables to get output
我需要使用以下声明从C ++ DLL调用包装函数:
[DllImport(@dllPath, EntryPoint = "Calling_fooBar")]
private static extern int Calling_fooBar( uint* a,
uint* b,
uint* c,
uint* d,
//etc );
以这种方式使用:
private void getData()
{
uint A, B, C, D; //etc
Calling_fooBar( &A, &B, &C, &D );
// ...
}
完成此操作后,A,B,C,D都仍然为0。我非常确定DLL中的外部方法可以正常工作,因此它们应该具有非零值。
所以我猜我是在错误地传递地址……之类的。
希望这不是一个愚蠢的问题。 我可以根据需要澄清任何内容
尝试将*
和&
更改为ref
。
上面的Slaks是。 这是成功完成此类操作的代码如下所示:
[DllImport("blah.dll")]
private static extern int thingy( ref uint refArg );
/* ... later in the code. ...*/
int retVal = thingy( ref refVariable );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.