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));返回的是乱码,日
求解决方案!
解决方案 »
- DevComponents.DotNetBar中不存在StyleManager
- c#2008怎么快捷键都是Ctrl+K?
- VS2008创建Label控件组的问题
- 问个线程的问题
- 在C#中,myCommand1、myCommand2和myCommand3是独立,reader1、reader2和reader3也是独立的,但在运行时,出错,信息为“已打开的与此连
- 求助,C# ,postgresql数据库问题
- .net与Oracle的连接字符串怎么写?就是那个协议不对,不知道为什么,请高手指点一下?
- 一条sql语句,请大家帮忙!
- 请介绍关于数据结构、算法、软件工程方面的经典图书
- 急!如何通过拖动鼠标实现Panel控件滚动条的滚动
- 求教,动态调用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的了:)