簡體   English   中英

char *到C#中的字符串

[英]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 *或字符串。

我從這個問題/答案開始,這是我在執行此操作時使用的:

如何從Native(C ++)代碼返回文本

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM