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

调用包装的C++;C#中的DLL方法:传递整数变量的地址以获得输出,c#,.net,pointers,dllimport,C#,.net,Pointers,Dllimport,我需要调用C++ DLL中的包函数,并用以下声明: [DllImport(@dllPath, EntryPoint = "Calling_fooBar")] private static extern int Calling_fooBar( uint* a, uint* b, uint* c,

我需要调用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

尝试将
*
&
更改为
ref

是,以满足上述要求。下面是我成功完成这些任务的代码:

[DllImport("blah.dll")]
private static extern int thingy( ref uint refArg );
/* ... later in the code. ...*/
int retVal = thingy( ref refVariable );

是的,在上面熟化。下面是我成功完成这些任务的代码:

[DllImport("blah.dll")]
private static extern int thingy( ref uint refArg );
/* ... later in the code. ...*/
int retVal = thingy( ref refVariable );

DLL几乎是一个黑盒。使用它来自动化另一家公司设计的测试软件,所以我不能更改它。但是头文件中的声明是什么?int调用_fooBar(uint*a,uint*b,uint*c);DLL几乎是一个黑盒。使用它来自动化另一家公司设计的测试软件,所以我不能更改它。但是头文件中的声明是什么?int调用_fooBar(uint*a,uint*b,uint*c);哼也许是别的原因,我会继续检查,至少你们已经向我保证了语法。谢谢。也许是别的原因,我会继续检查,至少你们已经向我保证了语法。谢谢