C#从C读取utf-8字符串,win8下正常,xp下读出来为null
C#中一个callback方法,是从C里向C#传utf-8字符串。
在win8下运行正常,xp下得到的字符串是null,请大家帮忙分析一下。
char* str;
//接收到网络数据并保存到str,确定有值,非null
callback(str); //调用c#中的方法,传字符串
interop c c# xp
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++是什么项目?项目的编码?涉及到多线程吗?