[英]Get a string from a c++ library with a java wrapper around it
晚上好,
我有一个c ++库文件,我试图从中获取字符串值而不是返回。
这适用于Xamarin中的Android应用程序构建。
.cpp文件
JNIEXPORT jint JNICALL Java_MyNamespace_ClassName_FunctionName
(JNIEnv *env, jclass obj, jstring returnString)
{
returnString = env->NewStringUTF("returnStringValue");
return 1;
}
在我的解决方案中,我有:
.cs文件
namespace myNamespace
{
[DllImport("FolderName", EntryPoint = "Java_MyNamespace_ClassName_FunctionName")]
private static extern int FunctionName(IntPtr env, IntPtr thiz, IntPtr returnString);
void test_function()
{
IntPtr j = new IntPtr();
int status = FunctionName(JNIEnv.Handle, IntPtr.Zero, j);
string ss = j.ToString();
//Where I am expecting ss to be containing "returnStringValue".
}
}
谢谢@SushiHangover
我们创建了一个字节数组
byte[] x = new byte[120];
分配内存并复制它
System.Runtime.InteropServices.Marshal.AllocHGlobal()
System.Runtime.InteropServices.Marshal.Copy()
然后转换使用:
System.Text.Encoding.UTF8.GetString()
显然这很好用。
问候
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.