我的开发环境是WIN7 + VS2008,做的是一款跟液体仿真有关的软件,需要安装Flowmaster v7.5,当时控件供应者提供了一个xx.dll的接口供调用,然后还有一个.h文件和.cpp文件,在提供的测试代码中,其他部分都没有问题,但是当执行一个功能是分析结果的函数的时候,执行速度非常慢,而且有的时候能成功,有的时候却报异常。
调用这个函数的代码是:network.RunAnalysis("zz","vc call","SS",FALSE,FALSE);
追踪进去函数源代码是
CString IDE_Doc::RunAnalysis(LPCTSTR sOwner, LPCTSTR sDescription, LPCTSTR sAnalysisCode, short shtHeatTransfer, short shtComponentInteraction)
{
CString result;
static BYTE parms[] =
VTS_BSTR VTS_BSTR VTS_BSTR VTS_I2 VTS_I2;
InvokeHelper(0x9, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
sOwner, sDescription, sAnalysisCode, shtHeatTransfer, shtComponentInteraction);
return result;
}调试下的输出为:
线程 'Win32 线程' (0x88c) 已退出,返回值为 0 (0x0)。
“dll_ss.exe”: 已加载“ImageAtBase0x10050000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8440000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x10050000”
“dll_ss.exe”: 已加载“ImageAtBase0x5bcb0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8500000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bcb0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Analysis.FluidProperties.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5bca0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8540000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bca0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.External.FluidProperties.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5bc90000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8550000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bc90000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Scripting.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5bc70000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8560000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bc70000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.LibraryAccess.dll”,未使用调试信息生成二进制文件。
线程 'Win32 线程' (0x1310) 已退出,返回值为 0 (0x0)。(到这里要执行二三十秒才往下跳)“dll_ss.exe”: 已加载“ImageAtBase0x5b9e0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0xd240000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5b9e0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Analysis.Models.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5b9b0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x6380000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5b9b0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Analysis.Controllers.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x6630000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x6660000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x6630000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Interop.MSScriptControl.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“C:\Windows\SysWOW64\msscript.ocx”
“dll_ss.exe”: 已加载“C:\Windows\SysWOW64\vbscript.dll”追踪进去
// make the call
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,
&dispparams, pvarResult, &excepInfo, &nArgErr);
主要是这个函数调用耗时很久,而且是不是编译器还报一个未处理的异常COleDispatchException
按照我老师以前的经验,这个过程本来应该只要一两秒钟的,但是我这样执行一次速度太慢了。
由于需要在代码中频繁调用,所以说肯定不现实,请问一下各位,知道这是什么原因嘛,万分感谢。
调用这个函数的代码是:network.RunAnalysis("zz","vc call","SS",FALSE,FALSE);
追踪进去函数源代码是
CString IDE_Doc::RunAnalysis(LPCTSTR sOwner, LPCTSTR sDescription, LPCTSTR sAnalysisCode, short shtHeatTransfer, short shtComponentInteraction)
{
CString result;
static BYTE parms[] =
VTS_BSTR VTS_BSTR VTS_BSTR VTS_I2 VTS_I2;
InvokeHelper(0x9, DISPATCH_METHOD, VT_BSTR, (void*)&result, parms,
sOwner, sDescription, sAnalysisCode, shtHeatTransfer, shtComponentInteraction);
return result;
}调试下的输出为:
线程 'Win32 线程' (0x88c) 已退出,返回值为 0 (0x0)。
“dll_ss.exe”: 已加载“ImageAtBase0x10050000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8440000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x10050000”
“dll_ss.exe”: 已加载“ImageAtBase0x5bcb0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8500000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bcb0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Analysis.FluidProperties.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5bca0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8540000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bca0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.External.FluidProperties.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5bc90000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8550000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bc90000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Scripting.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5bc70000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x8560000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5bc70000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.LibraryAccess.dll”,未使用调试信息生成二进制文件。
线程 'Win32 线程' (0x1310) 已退出,返回值为 0 (0x0)。(到这里要执行二三十秒才往下跳)“dll_ss.exe”: 已加载“ImageAtBase0x5b9e0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0xd240000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5b9e0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Analysis.Models.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x5b9b0000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x6380000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x5b9b0000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Flowmaster.Analysis.Controllers.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“ImageAtBase0x6630000”,未加载任何符号。
“dll_ss.exe”: 已加载“ImageAtBase0x6660000”,未加载任何符号。
“dll_ss.exe”: 已卸载“ImageAtBase0x6630000”
“dll_ss.exe”: 已加载“C:\Program Files (x86)\Flowmaster\FlowmasterV7\Interop.MSScriptControl.dll”,未使用调试信息生成二进制文件。
“dll_ss.exe”: 已加载“C:\Windows\SysWOW64\msscript.ocx”
“dll_ss.exe”: 已加载“C:\Windows\SysWOW64\vbscript.dll”追踪进去
// make the call
SCODE sc = m_lpDispatch->Invoke(dwDispID, IID_NULL, 0, wFlags,
&dispparams, pvarResult, &excepInfo, &nArgErr);
主要是这个函数调用耗时很久,而且是不是编译器还报一个未处理的异常COleDispatchException
按照我老师以前的经验,这个过程本来应该只要一两秒钟的,但是我这样执行一次速度太慢了。
由于需要在代码中频繁调用,所以说肯定不现实,请问一下各位,知道这是什么原因嘛,万分感谢。
解决方案 »
- 请教高手:如何让网页执行本地的脚本
- com技术主要应用与软件与硬件之间的链接???
- 读取位图的问题
- 配置文件在程序中的作用
- 今天去微软面试,竟然考了有关Delphi的题,难道微软真的要接收Delphi吗,难道AndersHejlsberg要重新打造Delphi吗
- 进来侃侃?????????????
- 请问:如何在程序启动时,使cformview最大化(和主窗口一样大)?
- 用VC进行屏幕截取编程
- 谁用过Rich TextBox?怎样不冲掉以前的数据,把新的数据一直写下去?SetText不行。
- 为何打印的位图会自动旋转
- 矩阵过渡变换的问题
- mfc c++ listbox控件 addstring问题,求解
或者输出传递的参数,让控件提供者帮助分析