1
我想調用MediaInfo.dll中的函數。在C中導入C++ dll函數#
功能是:
[DllImport("MediaInfo.dll", CharSet = CharSet.Unicode)] internal
static extern string MediaInfo_Option(IntPtr Handle, string OptionString, string Value);
這裏是它的名字叫代碼:
MediaInfo.MediaInfo_Open(this.h, path);
MediaInfo.MediaInfo_Option(this.Handle, "Complete", "1");
myTextBox.Text = MediaInfo.MediaInfo_Inform(this.h, 0);
MediaInfo.MediaInfo_Close(this.h);
const wchar_t* __stdcall MediaInfo_Option (void* Handle, const
wchar_t* Option, const wchar_t* Value);
我在這樣的C#代碼中聲明它問題在於,調用該func時,.NET Framework編譯的任何c#應用程序等於或大於版本4崩潰灰。
我該如何解決?
在此先感謝。
您無法將返回類型聲明爲* string *,pinvoke編組將嘗試釋放內存以獲得本機字符串,而且這種情況不太可能發生。改用IntPtr,用Marshal.PtrToStringUni()恢復字符串。然後跪下來祈禱你實際上不必釋放繩子。 –
你也在參考MediaInfo.DLL的64位版本,它可能會或可能不是你想要的 – Plutonix
@Hans Passant謝謝!現在效果很好! –