动态链接库的入口函数是int* 指针类型可以,为什么自己定义的CValue *,就不行了呢?

chh2002 2005-04-11 08:38:46
入口函数定义为encode(int * m)通过,为什么定义为encodeValue(CValue *val)就出错了呢?
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
晨星 2005-04-12
  • 打赏
  • 举报
回复
Enable Run-Time Type Information
就是Enable RTTI,启用运行时类型信息。

检查一下CIntegerValue* intVal=dynamic_cast<CIntegerValue *>(val)
之后,intVal是否为NULL。
你的val指针指向的对象实际上是个CIntegerValue对象么?如果不是,dynamic_cast会返回NULL的。
chh2002 2005-04-11
  • 打赏
  • 举报
回复
能否解释一下Enable Run-Time Type Information(RTTI)
是怎么回事?多谢!
chh2002 2005-04-11
  • 打赏
  • 举报
回复
warning是没有了,可是运行时还是终止了,就是因为
CIntegerValue* intVal=dynamic_cast<CIntegerValue *>(val),这个语句
晨星 2005-04-11
  • 打赏
  • 举报
回复
竟然默认是关闭的。
晨星 2005-04-11
  • 打赏
  • 举报
回复
真受不了VC,RTTI竟然模式是关闭的,那还叫“C++”啊?
晨星 2005-04-11
  • 打赏
  • 举报
回复
菜单Project/Settings,在“C/C++”属性页中,Category下拉框选择“C++ Language”,然后选中底下的CheckBox项:Enable Run-Time Type Information(RTTI)
chh2002 2005-04-11
  • 打赏
  • 举报
回复
不好意思,出错不是因为这个原因,我使用了CIntegerValue* intVal=dynamic_cast<CIntegerValue *>(val),警告:warning C4541: 'dynamic_cast' used on polymorphic type 'class CValue' with /GR-; unpredictable behavior may result
Generating Code...
传递的类实际是CValue的继承类CIntegerValue,所以我想转换一下,就出错了,为什么呢?
晨星 2005-04-11
  • 打赏
  • 举报
回复
你的CValue应该是个C++的类吧?
晨星 2005-04-11
  • 打赏
  • 举报
回复
你是不是入口声明使用了
extern "C"
了?

那样的话,就不能让入口中出现任何跟C++有关的东东,又如重载函数、引用参数等等。

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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