2011-10-10 108 views
1

我在C++函數返回指針值:遷移功能C++的指針,以C#

fPosFirst(int &aId, char *aNname, char *aDirectory); 

我在C#語法是:

fPosFirst(ref int aId, String aNname, String aDirectory); 

函數返回ID,但不任何人都知道的字符串參數?

+0

你能告訴我們你在C#中怎麼做才能調用C++函數? –

+0

歡迎來到SO,我希望你閱讀[FAQ](http://stackoverflow.com/faq#howtoask)。 –

回答

1

假設本地函數沒有「返回指針」,而是將字符寫入由aNname和aDirectory指定的內存位置,您應該能夠將具有適當容量的StringBuilder傳遞給本機功能:

void fPosFirst(ref int aId, StringBuilder aNname, StringBuilder aDirectory); 

用法:

var aId = 0; 
var aNname = new StringBuilder(260); 
var aDirectory = new StringBuilder(260); 

fPosFirst(ref aId, aNname, aDirectory); 
2

如果您希望將參數用於返回值,則將它們標記爲refout

E.g.

fPosFirst(ref int aId, out string aNname, out string aDirectory); 
0

你需要做的字符串參數refout,如果你想在方法中分配給他們,並有可用的方法之外的值。

0

您需要在參數名稱前使用out關鍵字(example)。但實際上,這在C#中不是很好的做法。