asp.net调用vc++2005写的com组件出现错误0x80010105 (RPC_E_SERVERFAULT))

qmzhn 2011-11-28 07:13:06
用vs2005 c++ 写的一个com 然后用asp.net调用

在网页后台的调用代码如下

protected void Button1_Click(object sender, EventArgs e)
{
jkClass jkc = new jkClass();
double m, z, b;
jkc.Start();
jkc.GetParamsValue(out m, out z, out b);
TextBoxM.Text = m.ToString();
TextBoxZ.Text = z.ToString();
TextBoxB.Text = b.ToString();

//jkc.Regen(10.0, 20.0, 30.0);
jkc.Closed();


}


点击按钮之后出现错误,错误描述如下

服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.Runtime.InteropServices.COMException: 服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))

源错误:


行 25: //TextBoxB.Text = b.ToString();
行 26: jkc.Start();
行 27: jkc.Regen(10.0, 20.0, 30.0);
行 28: jkc.Closed();
行 29:

堆栈跟踪如下:

[COMException (0x80010105): 服务器出现意外情况。 (异常来自 HRESULT:0x80010105 (RPC_E_SERVERFAULT))]
hllGearLib.jkClass.Regen(Double M, Double Z, Double B) +0
Windlass.UI.ProeTest.Button1_Click(Object sender, EventArgs e) in E:\杨老师\461锚绞机\工程源码\Windlass\Windlass\UI\ProeTest.aspx.cs:27
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +111
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +110
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1565


然后com里的该函数代码如下:

STDMETHODIMP Cjk::GetParamsValue(DOUBLE* M, DOUBLE* Z, DOUBLE* B)
{
// TODO: 在此添加实现代码
ProError status;
ProFamilyName name;
ProMdl p_handle;
ProModelitem p_modelitem;

ProStringToWstring(name, "D:\\ptc\\model\\gear\\conic_straight_gear.prt");
status = ProMdlRetrieve(name, PRO_MDL_PART, &p_handle);

if(status != PRO_TK_NO_ERROR)
return S_FALSE;
status = ProMdlToModelitem(p_handle, &p_modelitem);

UserGetParamValue(p_modelitem, "M", M);
UserGetParamValue(p_modelitem, "Z", Z);
UserGetParamValue(p_modelitem, "B", B);
return S_OK;
}


是pro/e的二次开发,貌似是在这一句出问题了
status = ProMdlRetrieve(name, PRO_MDL_PART, &p_handle);
我想是不是com里面对于字符串的处理导致的,因为前面用
ProStringToWstring(name, "D:\\ptc\\model\\gear\\conic_straight_gear.prt");将路径字符串转换为宽字符串了。

有谁知道的能不能告诉一下怎么回事啊


...全文
250 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qmzhn 2011-12-10
  • 打赏
  • 举报
回复
恩 应该只能通过调试才能查到具体哪里错了吧 不过现在也没时间搞 还没解决 谢谢大家的回答 三个人 40分不能均分 少一点的别有意见哈
Waistcoat23 2011-11-29
  • 打赏
  • 举报
回复
直接写个测试程序调用吧
Kaile 2011-11-29
  • 打赏
  • 举报
回复
先建立一个C++项目,对COM作测试,便于调试
fishion 2011-11-29
  • 打赏
  • 举报
回复
用VS05远程调试组件呀
qmzhn 2011-11-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 waistcoat23 的回复:]
直接写个测试程序调用吧
[/Quote]

你好 没太明白你的意思 能说详细点吗

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧