救命 VC控件mscomm类问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 12:14:26
我用VC6.0 FMC制作了一个接收仪器数据的程序,分别作了两个版本。一个是基于对话框的,另一个是基于菜单的。编译通过,运行正常。
现在的问题是一旦脱离装有VC环境的电脑,只要运行后一初始化我的mscomm,基于对话框的程序运行没问题。可是基于菜单的程序就会出现debug错误。
注明:使用Dependency查看调用dll,在另一台没vc环境的电脑注册如下:
GDI32.DLL
KERNEL32.DLL
MFC42D.DLL
MFCO42D.DLL
MSVCRTD.DLL
NTDLL.DLL
USER32.DLL
之后注册了 mscomm.ocx
我觉得应该注册全了,不然我的基于对话框的程序运行良好。可奇怪的是同样的代码,我的菜单程序就出现错误。请问有哪位vc高手给我解答一下,如果不好说,可用QQ联系。如果解决,一定把分送上。谢谢!!!

SetOutput()函数原型如下
void CMSComm::SetOutput(const VARIANT& newValue)
{
static BYTE parms[] =
VTS_VARIANT;
InvokeHelperparms (0x19,DISPATCH_PROPERTYPUT,VT_EMPTY, NULL, &newValue);
}
其中的CWnd::InvokeHelperparms ()原型如下:

void InvokeHelper( DISPID dwDispID, WORD wFlags, VARTYPE vtRet, void* pvRet, const BYTE* pbParamInfo, ... );
throw( COleException );
throw( COleDispatchException );

可以看出,参数传递的是数组指针的引用

是否是因为编译方式用了SHARE的原因?

把debug错误 信息贴出来啊
可能是你编译了mfc程序的debug版本,而一些系统是没有安装debug版本的动态链接库的
把程序改成release试试

库文件的版本问题,把所有使用到的库都拷贝到 mscomm所在文件夹。

你可能在菜单的程序里面使用了MFC。
使用静态MFC库编译吧。一定可以。