智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组
2007-12-23 19:37
465 查看
C#中调用:
[DllImport(DLLName, EntryPoint = "pdaAppRead", CharSet = CharSet.Auto, SetLastError = true)]
public static extern short td_select(Int32 Adr, byte[] getData);
private void button1_Click(object sender, EventArgs e)//写
...{
string s = "这是测试1";
s = textBox1.Text;
byte[] b = Encoding.Unicode.GetBytes(s);//Encoding.Default.GetBytes(s);也可以;
td_select(2, s);
}
C++
LPSTR unicodeTOmbcs(CString str)
...{
LPSTR retlpa;
LPCOLESTR lpw;
lpw=(LPCOLESTR)str;
size_t wLen = wcslen( lpw ) + 1; // 宽字符字符长度,+1表示包含字符串结束符
int aLen=WideCharToMultiByte( // 第一次调用,计算所需 MBCS 字符串字节长度
CP_ACP,
0,
lpw, // 宽字符串指针
wLen, // 字符长度
NULL,
0, // 参数0表示计算转换后的字符空间
NULL,
NULL);
LPSTR lpa = new char [aLen];
WideCharToMultiByte(
CP_ACP,
0,
lpw,
wLen,
lpa, // 转换后的字符串指针
aLen, // 给出空间大小
NULL,
NULL);
// 此时,lpa 中保存着转换后的 MBCS 字符串
retlpa=lpa;
delete [] lpa;
return retlpa;
}
int td_select(unsigned char _Adr,unsigned char *_Data)
...{
CString inputstr=(LPCWSTR)_Data;
CString result;
LPSTR lpa=NULL;
unsigned char data[16];
lpa=unicodeTOmbcs(inputstr);//转换
strcpy((char *)data,(const char *)lpa);//data 这是测试1
}
[DllImport(DLLName, EntryPoint = "pdaAppRead", CharSet = CharSet.Auto, SetLastError = true)]
public static extern short td_select(Int32 Adr, byte[] getData);
private void button1_Click(object sender, EventArgs e)//写
...{
string s = "这是测试1";
s = textBox1.Text;
byte[] b = Encoding.Unicode.GetBytes(s);//Encoding.Default.GetBytes(s);也可以;
td_select(2, s);
}
C++
LPSTR unicodeTOmbcs(CString str)
...{
LPSTR retlpa;
LPCOLESTR lpw;
lpw=(LPCOLESTR)str;
size_t wLen = wcslen( lpw ) + 1; // 宽字符字符长度,+1表示包含字符串结束符
int aLen=WideCharToMultiByte( // 第一次调用,计算所需 MBCS 字符串字节长度
CP_ACP,
0,
lpw, // 宽字符串指针
wLen, // 字符长度
NULL,
0, // 参数0表示计算转换后的字符空间
NULL,
NULL);
LPSTR lpa = new char [aLen];
WideCharToMultiByte(
CP_ACP,
0,
lpw,
wLen,
lpa, // 转换后的字符串指针
aLen, // 给出空间大小
NULL,
NULL);
// 此时,lpa 中保存着转换后的 MBCS 字符串
retlpa=lpa;
delete [] lpa;
return retlpa;
}
int td_select(unsigned char _Adr,unsigned char *_Data)
...{
CString inputstr=(LPCWSTR)_Data;
CString result;
LPSTR lpa=NULL;
unsigned char data[16];
lpa=unicodeTOmbcs(inputstr);//转换
strcpy((char *)data,(const char *)lpa);//data 这是测试1
}
相关文章推荐
- wince C# 调用 mfc dll 返回字符串乱码之解决方案[转]
- c#调用C++ dll 报未将对象引用到设置对象的实例 的解决方案
- 【转】智能设备的C#和C++的混合项目开发心得(非托管的DLL函数调用)
- VS 2008 mfc 智能应用程序 调用 C# webservice.(二)(gsoap+wince)
- 智能设备的C#和C++的混合项目开发心得(非托管的DLL函数调用)
- c#调用C++ dll 报未将对象引用到设置对象的实例 的解决方案
- 关于c#调用c++ dll 的一些问题和解决方案
- 如何利用MFC编写的.exe调用C#编写的dll动态库
- VC++ (MFC)调用 C#生成DLL的方法
- C#调用VB的dll 纸币找零设备操作
- c# 调用php webservice 汉字乱码解决方案 php调用c# webservice 汉字乱码解决方案(亲测)
- C#智能设备中程序的调用
- MFC调用c#的dll
- C#调用MFC程序DLL库——MFC项目DLL生成问题、DLL引用链问题、DLL读取配置文件路径问题
- C#调用C++的DLL的解决方案
- MFC中调用C#编写的DLL
- MFC中调用C# DLL库
- C#调用mfc的dll后面的接口函数怎么写?
- VC++ (MFC)调用 C#生成DLL的两种方法
- 自定义序列化4 (MFC调用C#的.dll)