C#調用C函數(DLL)傳遞參數問題

備忘:

1.C函數參數爲字符串char*。如果是入參,對應C#中string或StringBuilder;如果是出參對應C#中StringBuider;

 

2.C函數參數爲結構體指針,需在C#中對應定義結構體。如果是入參,C#中可爲myfunction(MyStruct mystruct)或myfunction(ref MyStruct mystruct);如果是出參,C#中爲myfunction(ref MyStruct mystruct)。有多個函數使用MyStruct參數時,如果有一個函數使用ref,則其它函數也要使用ref,無論其是否是出參,否則會在運行時提示出現內存錯誤。即要儘量保證同一結構體類型的參數在C#中定義的一致性。

 

3.C函數不能返回數組,但可將數組封裝爲結構體的成員,通過返回結構體結果,從而得到要返回的數組。

 

 其它參考文章:

平臺調用P-INVOKE(一)--(基礎篇) 

http://blog.csdn.net/sdl2005lyx/article/details/6796037

平臺調用P-INVOKE(二)--(封送字符串) 

http://blog.csdn.net/sdl2005lyx/article/details/6799495

 

平臺調用P-INVOKE(三)--(封送結構體) 

http://blog.csdn.net/sdl2005lyx/article/details/6801113

 

平臺調用P-INVOKE高級篇(一)--(封送含有二維數組的結構體) 

http://blog.csdn.net/sdl2005lyx/article/details/6998969


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章