olefact.cpp的错误(很疑惑)

shuiniaoqingren 2008-07-03 05:30:34
有个程序在别人电脑上编程生成.exe都是好用的,但是一放到别的机器上
一运行.exe文件就会有个错误框弹出(除非重新编译才好用),说是olefact.cpp(122行)里注册的那个函数
的第一行代码错误,不知道原因。

因为交活的时候客户可能就会直接点解.exe,这样的话怕出现问题。

请问高位高手有什么解决方案吗,谢谢。。
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shuiniaoqingren 2008-07-04
  • 打赏
  • 举报
回复
高手求助呀。。
shuiniaoqingren 2008-07-04
  • 打赏
  • 举报
回复

恩,谢谢你

不过我还是有一个问题感觉很奇怪

在那台出错的机器上在ALL Rebulid 以后就不会出现。

请问原因是什么呢?

arong1234 2008-07-03
  • 打赏
  • 举报
回复
从这个错误看,你代码必然存在一个你没找出的bug,最好还是好好调试,不要放过任何可能的错误
arong1234 2008-07-03
  • 打赏
  • 举报
回复
1. 使用release编译
2. 确保你用的控件在编译机器上的版本必须至少不高于运行机器上的控件的版本
3. 使用的操作系统必须一致
arong1234 2008-07-03
  • 打赏
  • 举报
回复
且看出错代码
出错时:ASSERT_VALID(this)报错,这至少预示着以下几个问题:
1. 你必然是把debug编译结果放到别的机器上运行,因此ASSERT_VALID在release编译时不起作用
2. this指针非法说明你指针指向的对象有问题(这和你怎么用这个对象有关系)

BOOL COleObjectFactory::Register()
{
ASSERT_VALID(this);
ASSERT(!m_bRegistered); // registering server/factory twice?
ASSERT(m_clsid != CLSID_NULL);

if (!afxContextIsDLL)
{
// In the application variants, the IClassFactory is registered
// with the OLE DLLs.

SCODE sc = ::CoRegisterClassObject(m_clsid, &m_xClassFactory,
CLSCTX_LOCAL_SERVER,
m_bMultiInstance ? REGCLS_SINGLEUSE : REGCLS_MULTIPLEUSE,
&m_dwRegister);
if (sc != S_OK)
{
#ifdef _DEBUG
TRACE1("Warning: CoRegisterClassObject failed scode = %s.\n",
::AfxGetFullScodeString(sc));
#endif
// registration failed.
return FALSE;
}
ASSERT(m_dwRegister != 0);
}

++m_bRegistered;
return TRUE;
}
lionc650 2008-07-03
  • 打赏
  • 举报
回复
你是用release编译的吗?一般用debug编译就很容易出这个问题
iu_81 2008-07-03
  • 打赏
  • 举报
回复
发布你自己编译环境上的那些动态链接库之类的
iu_81 2008-07-03
  • 打赏
  • 举报
回复
可能装的SP与你不同,因此要重新连接焊上正确的接口。
函数的导入表地址不同,所以会出这种问题。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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