2010-11-05 21 views
0

我需要調用從C包裹函數++ DLL與以下聲明:中調用封裝的C++ DLL方法從C#:積分變量的傳遞地址獲得輸出

[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中的外部方法正常工作,所以他們應該有非零值。
所以我猜我是通過錯誤的地址...或者什麼的。

希望這不是一個愚蠢的問題。如果需要,我可以澄清任何東西

+0

什麼是C++聲明? – SLaks 2010-11-05 21:01:15

+0

該DLL幾乎是一個黑匣子。用它來自動化另一家公司設計的測試軟件,所以我不能改變它。 – hLiu 2010-11-05 21:07:55

+0

但是頭文件中的聲明是什麼? – SLaks 2010-11-05 21:10:06

回答

2

對上面的Slaks是。這裏是我的代碼,成功做這種事情看起來像這樣:

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

hum。那麼也許它是別的,我會繼續檢查 至少你們已經向我保證了語法。 – hLiu 2010-11-05 21:15:08

3

嘗試更改*&ref

+0

剛剛嘗試過: Calling_fooBar(ref uint A,// etc – hLiu 2010-11-05 21:09:10