【发布时间】:2010-09-16 14:16:15
【问题描述】:
这是我的错误。
dyld: Symbol not found: __ZTIN8eqOsirix3ROIE
Referenced from: /Users/slate/Documents/osirixplugins/CoreDataTrial_EQOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix
Expected in: flat namespace
in /Users/slate/Documents/osirixplugins/CoreDataTrial_EQOsirix/build/Development/rcOsirix.app/Contents/MacOS/rcOsirix
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Not safe to call dlopen at this time.)
(gdb) bt
#0 0x8fe01065 in __dyld_dyld_fatal_error ()
#1 0x8fe04fa5 in __dyld__ZN4dyld4haltEPKc ()
#2 0x8fe0796b in __dyld__ZN4dyld5_mainEPK12macho_headermiPPKcS5_S5_ ()
#3 0x8fe018b1 in __dyld__ZN13dyldbootstrap5startEPK12macho_headeriPPKcl ()
#4 0x8fe01057 in __dyld__dyld_start ()
(gdb) continue
Program received signal: “EXC_BAD_ACCESS”.
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Not safe to call dlopen at this time.)
(gdb) bt
#0 0x8fe010e3 in __dyld__ZN13dyldbootstrapL30randomizeExecutableLoadAddressEPK12macho_headerPPKcPm ()
#1 0x8fe04fa5 in __dyld__ZN4dyld4haltEPKc ()
#2 0x8fe0796b in __dyld__ZN4dyld5_mainEPK12macho_headermiPPKcS5_S5_ ()
#3 0x8fe018b1 in __dyld__ZN13dyldbootstrap5startEPK12macho_headeriPPKcl ()
#4 0x8fe01057 in __dyld__dyld_start ()
(gdb)
eqOsirix 是我的主要命名空间。不久前我遇到了两个类似的问题(one 和 two),但现在这两种解决方案都对我没有帮助。
我在更新我的 mac 后注意到了这个问题,但我认为这无关紧要。
不会产生编译错误(或警告)。
是什么原因造成的?为什么编译器在链接期间没有捕获任何东西?我已经完成了干净的构建,重置了 XCode 和 Mac....啊!
[编辑]
由于@Troubador 指出ROI 不是争夺的一部分,因此我将投资回报率包括在下面:
#ifndef EQOSIRIX_ROI_H
#define EQOSIRIX_ROI_H
namespace eqOsirix{
class ROI : public eq::Object
{
public:
ROI() {};
virtual ~ROI() {};
virtual uint32_t getType() {return NONE;};
virtual void draw() {};
protected:
enum ROIType {
NONE = 0,
LINE,
POLY,
AREA,
VOLUME
};
private:
};
}
#endif//EQOSIRIX_ROI_H
没什么可搞砸的,我认为我已经为 C++(而不是 Java 或 ObjC)定义了所有虚拟对象???
【问题讨论】:
-
缺少的是 eqOsirix::ROI 的类型信息。你在代码中使用 gcc 的可见性属性吗?
-
大声笑,我认为投资回报率是争夺战的一部分……嗯,因为我不知道可见性属性是什么,所以我猜不是。
-
好的,谢谢。 g++ undefined reference to typeinfo 的答案可能会解释这一点。看看这些是否有帮助。
-
我把
eqOsirix::ROI的代码贴上了...我没看出有什么问题? -
ROI看起来不错。问题可能出在基础eq::Object上。 (顺便说一句,ROI的定义中有很多多余的分号。在函数定义的右大括号之后不需要它们。)
标签: c++ namespaces dyld