我的代码是这样的:
void some_func(void *source)
{
...
double *casted = reinterpret_cast<double *>(source);
...
}这会导致std::__non_rtti_object异常。根据堆栈跟踪,它是从__RTDynamicCast中提出的,据我所知,这是dynamic_cast的MSVC实现。
这个异常应该发生在dynamic_cast中,因为指针来自外部库(可能没有/GR编译),并且指向带有几个双倍的结构。但我不认为reinterpret_cast会这样。难道它不应该改变指针的类型而不进行任何检查吗?
备注:
发布于 2014-04-23 19:59:52
不可复制的。
啊,我试着用所有额外的库重建整个项目,问题就消失了。看起来很奇怪,因为我从来没有使用过dynamic_cast的代码,所以不知道是什么原因造成的。另外,我之前已经尝试过只重建这个项目(没有其他dll)。不管怎样,谢谢你的帮助。-- OP
发布于 2014-04-24 05:47:00
您似乎需要在makefile中重新检查dll的构建顺序(如果使用这种方式)。我猜来自您提到的外部库的源来自于构建树中的“更高”的外部库,而不是您的代码所在的库。试着看看你的makefile是否正常工作(可能漏掉了一些触发器)。
https://stackoverflow.com/questions/20503708
复制相似问题