用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");将路径字符串转换为宽字符串了。有谁知道的能不能告诉一下怎么回事啊