[英]char* to a string in C#
我從一個返回char*
指針的本機DLL調用一個函數,如何將返回的指針轉換為字符串? 我試過了 :
char* c = function();
string s = new string(c);
但它只是返回了一個奇怪的漢字,這不是c
的正確值。
也許本機DLL實際上返回的是ANSI字符串而不是Unicode字符串。 在這種情況下,請致電Marshal.PtrToStringAnsi
:
using System.Runtime.InteropServices;
...
string s = Marshal.PtrToStringAnsi((IntPtr)c);
更新外部函數的P / Invoke聲明:
[DllImport ( "MyDll.dll", CharSet = CharSet.Ansi, EntryPoint = "Func" )]
[return : MarshalAs( UnmanagedType.LPStr )]
string Func ( ... );
這樣,獲得指針后就不必再做額外的工作了。
你的例子並不完全清楚,但你的評論暗示你是從c#調用c ++ dll。 您需要返回bstr,而不是char *或字符串。
我從這個問題/答案開始,這是我在執行此操作時使用的:
public static void Main(string[] args)
{
var charArray = new[] {'t', 'e', 's', 't'};
fixed (char* charPointer = charArray)
{
var charString = new string(charPointer);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.