C#从C读取utf-8字符串,win8下正常,xp下读出来为null
C#中一个callback方法,是从C里向C#传utf-8字符串。
在win8下运行正常,xp下得到的字符串是null,请大家帮忙分析一下。
char* str;
//接收到网络数据并保存到str,确定有值,非null
callback(str); //调用c#中的方法,传字符串
static void callback_method(string val)
{
//此处val,win8下能即到数据,xp下却是null,不管c++里传的是英文还是汉字,都是如此
}
------解决方案--------------------能说下 你的开发环境么 比如NET fram版本 VS版本
------解决方案--------------------指向callback_method的委托变量应该要声明成静态或全局变量,防止gc回收。
------解决方案--------------------static void callback_method(
StringBuilder val)
{
...
}
这样呢?
------解决方案--------------------public static void callback_method(ref byte val)
{
}
或者
public static void callback_method(string val)
{
}
------解决方案--------------------不要用 string,因为 C 里是无法生成 C# 中的类型的。
按下面的改成 IntPtr 后,再好再增加一个整数参数表示数据长度。
static void callback_method(IntPtr val)
{
}
------解决方案--------------------是不是引用的库函数有问题
------解决方案--------------------看错了,c++应该没有大问题
------解决方案--------------------
没有限制,c++是什么项目?项目的编码?涉及到多线程吗?