1

我想使用 char* 作为返回值(就像在 Unity 的示例插件中所做的那样),但是我得到了一些无效的标记(效汬o)而不是简单的“Hello”。有什么想法可能是错的吗?

动态链接库:

extern "C"
{
    const __declspec(dllexport) char*  PrintHello()
    {
        return "Hello";
    }
}

统一:

public class audiotest : MonoBehaviour 
{
    [DllImport("ASimplePlugin")]
    private static extern IntPtr PrintHello();

    void Start ()
    {
        Debug.Log(Marshal.PtrToStringAuto(PrintHello()));
    }
}

Unity 的示例插件可以在http://docs.unity3d.com/Documentation/Images/manual/SimplestPluginExample-4.0.zip找到

我正在使用 Unity 4.2.1f4 和 Visual Studio 2010

4

1 回答 1

3

使用 PtrToStringAnsi 而不是 PtrToStringAuto。

您的 DLL 返回一个 ANSI 字符串,但 PtrToStringAuto 在 Windows 98 以外的任何设备上都需要 Unicode。

于 2013-10-15T14:39:31.170 回答