繁体   English   中英

从C#调用包装的C ++ DLL方法:传递整数变量的地址以获取输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM