dll函数中的输入和输出参数都有CString,该如何定义?
[DllImport("xx.dll", EntryPoint = "GetWord", CharSet = CharSet.Auto)]
public static extern IntPtr GetWord(IntPtr str, int nHandle);
string word = Marshal.PtrToStringAuto(GetWord(Marshal.StringToHGlobalAuto(strText), nCount));返回的是乱码,日
求解决方案!
[DllImport("xx.dll", EntryPoint = "GetWord", CharSet = CharSet.Auto)]
public static extern IntPtr GetWord(IntPtr str, int nHandle);
string word = Marshal.PtrToStringAuto(GetWord(Marshal.StringToHGlobalAuto(strText), nCount));返回的是乱码,日
求解决方案!
解决方案 »
- 数据库如果所有的字面全部都用中文会带来什么麻烦吗?
- lock
- 关于C#2005combobox二级联动的问题
- 放弃9月的.NET深崖,转向java?——应届毕业生
- 请问,我该如何创建一个statusbar组件/用户控件?
- OS是MOBILE5。0 的PDA 上 用 vs2005 c# 开发 应用 请问如何 和 ORACLE 10g 数据库交互
- c#如何将用户通过openFileDialog 和saveFileDialog
- 网页弹出的JS框,我想用回车自动确认,但是不知道怎么在webbrowser里面模拟按回车。求指点。当然如果有别的办法也可以的。
- C#怎么判断一个字符串中汉字的个数
- 我刚学完.net,想做一个qq,怎样才能把QQ的图标做到状态栏右下脚的时钟旁边呀!
- 求教,动态调用win32函数。
- Label设置Enabled=false时的文字颜色
public static extern int GetApiFunction(
string strParaA,
StringBuilder strParaB,
int intParaC,
out int intParaD,
bool blnParaE);C++数据类型和C#的部分对应关系:C++ 输入输出 C#
==================================
char chr[255] O StringBuilder
KCA_DIR I int
LPCSTR I string
int I int
LPSTR O StringBuilder
int* O out int
DWORD I int
DWORD* O out int
BOOL I bool
Rc_DBMgr I IntPtr
long* O out long
如果不行,看看dll是否能转换参数类型,即把Cstring用char*来代替。
转换参数类型?Cstring用char*?怎么做?这个是第三方的dll啊
CString中的char* 用 StringBuilder 替,
先试下吧,可以再来冒个泡有好方法也继续关乎啊
我再挂个dll做tmp居然也是乱码
CString word = GetWord(hHandle, index);//从原始的dll里取
char* str = word.GetBuffer(word.GetLength());//这部我直接在VC里调试过,取值是正确的啊
return str;
如果是直接char* str="中文"; return str;就没问题!来人啊..救命..
这里取出来是否正确呢
CString word = GetWord(hHandle, index);//
char* str = word.GetBuffer(word.GetLength());//
就在里边,跟踪发现没有任何问题.
把这同一段代码拷贝到外套dll里,由于不能跟踪到里面,但是有理由认为取到了正确的值(与上面相比,没有特殊的地方)
结果就是得不到中文...
CString word = GetWord(hHandle, index);
char* str = new char[word.GetLength()];
strcpy( str, word.GetBuffer(word.GetLength() );
return str;
真是百思不得其解呀,这种方式和我的赋值方式应该是一致的啊,为什么我的那种就不行呢?
不过问题总算解决了!那个破组件商,诅咒他出门被车撞!谢谢Knight94(愚翁) 老哥了!
有谁知道我错在哪的,PM我,我再给100分!
这里的100分毫无疑问都是给Knight94的了:)