我正在嘗試編寫一些從非托管DLL調(diào)用方法的C#代碼。dll中的函數(shù)原型為:extern "C" __declspec(dllexport) char *foo(void);在C#中,我首先使用:[DllImport(_dllLocation)]public static extern string foo();它似乎在表面上起作用,但是在運(yùn)行時出現(xiàn)內(nèi)存損壞錯誤。我認(rèn)為我指的是碰巧是正確的但已經(jīng)被釋放的內(nèi)存。我嘗試使用稱為“ P / Invoke Interop Assistant”的PInvoke代碼生成實(shí)用程序。它給了我輸出:[System.Runtime.InteropServices.DLLImportAttribute(_dllLocation, EntryPoint = "foo")]public static extern System.IntPtr foo();它是否正確?如果是這樣,如何在C#中將此IntPtr轉(zhuǎn)換為字符串?
用于返回char的C函數(shù)的PInvoke
繁華開滿天機(jī)
2019-11-28 14:12:57