t1.cpp代码
extern "C" __declspec(dllexport) BSTR __stdcall GetBalance(BSTR InStr)
{
//参数InStr值此处暂不用,只是为了测试CString转成BSTR,可结果VB调用后只返回一个字符a,如果Buf = "汉bc",调用后返回的是乱码
CString Buf;
Buf = "abc";
return Buf.AllocSysString();
}
vb调用代码Private Declare Function GetBalance Lib "WebService.DLL" (ByVal UserID As String) As StringPrivate Sub Command1_Click()
MsgBox GetBalance("参数")
End Sub问题1:CString转成BSTR作为返回值,若返回值为ascii码,则VB调用后只返回一个字符,为什么不返回"abc",怎么解决
问题2:CString转成BSTR作为返回值,若返回值为中文字符,则VB调用后只返回是乱码,怎么解决
extern "C" __declspec(dllexport) BSTR __stdcall GetBalance(BSTR InStr)
{
//参数InStr值此处暂不用,只是为了测试CString转成BSTR,可结果VB调用后只返回一个字符a,如果Buf = "汉bc",调用后返回的是乱码
CString Buf;
Buf = "abc";
return Buf.AllocSysString();
}
vb调用代码Private Declare Function GetBalance Lib "WebService.DLL" (ByVal UserID As String) As StringPrivate Sub Command1_Click()
MsgBox GetBalance("参数")
End Sub问题1:CString转成BSTR作为返回值,若返回值为ascii码,则VB调用后只返回一个字符,为什么不返回"abc",怎么解决
问题2:CString转成BSTR作为返回值,若返回值为中文字符,则VB调用后只返回是乱码,怎么解决
解决方案 »
- 2011- 年终总结,有多少想看的,你的可以共享给我?
- 用CHtmlView 自制网页浏览器,如何禁止弹出窗口
- Windows是如何知道用那个驱动来驱动设备的?
- 有点难度呀!!如何在类中产生事件???只有十分了。
- 多线程请教——关于一个参数怎么设置的问题 [在线]
- 关于系统托盘图标的问题,Keywords:systray,menu
- c和c++的struct有什么区别吗?
- 帮帮忙关于 INTERNET_PORT 的问题!
- 如何使基于DIALOG也有on_update_command_ui功能?
- 怎样将应用程序和数据文件合并?
- 嵌入网页中的activex控件如何截获ie菜单中的打印命令?
- 想学VC,不知道有什么好的入门级书没,学过点C/C++
extern "C" __declspec(dllexport) BSTR __stdcall GetBalance(BSTR InStr)
{
CComBSTR bstr( "abc" );
CComBSTR bstr1( InStr );
bstr+=bstr1;
//*pVal=bstr.Copy();
return bstr.Copy();
}
(1)我用vs2003开发了一个webservice接口很简单index.asmx部分代码如下:
[WebMethod]
public string GetBalance(string UserID)
{
//此处只是为了返回一个字符串
return "尊敬的"+UserID+",您的余额为20元";
}
(2)再用vs2003开发,vc7开发了一个非托管的WebService.dll来调用这个服务
WebService.cpp部分代码如下:using namespace index;//webservice类extern "C" __declspec(dllexport) BSTR __stdcall GetBalance(BSTR UserID)
{
HRESULT hr = S_OK;
CComBSTR hiResult;
Cindex* index = new Cindex;//webservice类
//类视图中的调用说明GetBalance(BSTR UserID,BSTR *GetBalanceResult) hr = index->GetBalance(UserID,&hiResult); //注意,返回值是以指针形式反回的 delete index;
if(FAILED(hr))
{
BSTR str("调用失败")
return "调用失败";
}
else
{
//应该返回"尊敬的"+UserID+",您的余额为20元";可实际返回不了值
CString str(hiResult);
return str.AllocSysString();
}
}
(3)vb调用代码 form1.frm部分代码如下:
Private Declare Function GetBalance Lib "WebService.DLL" (ByVal UserID As String) As String Private Sub Command1_Click()
'应该显示 尊敬的小强,您的余额为20元,可是返回不了
MsgBox GetBalance("小强")
End Sub 这是我做的程序有以下调用问题,
(1)为什么传到index.asmx的GetBalance方法中参数UserID变成乱码,
public string GetBalance(string UserID)
{
//此处只是为了返回一个字符串
return "尊敬的"+UserID+",您的余额为20元";
}
(2)WebService.cpp中无法正确调用web服务的返回值
CString str(hiResult);
return str.AllocSysString();(3)vb无法得到正确返回值 (4)哪位朋友有类似的程序或遇到我这样问题帮忙解决一下,感激!