Dear All, I'm having the following problem linking code that defines and uses an AnalysisGroup. I have an analysis group defined as follows: class PoolAllocateGroup { public: static char ID; virtual ~PoolAllocateGroup (); virtual PA::FuncInfo *getFuncInfo(Function &F); ... }; ... which is then inherited by a ModulePass: class PoolAllocate : public ModulePass , public PoolAllocateGroup { ... }; ... which is then inherited by another pass: class PoolAllocateSimple : public PoolAllocate { ... } When I compile the code into a dynamically linked library, everything is fine. However, when I try to link that dynamic library into a program in another project, I get the following error: /localhome/criswell/llvm22/projects/llvm-poolalloc/Debug/lib/libpoolalloc.so: undefined reference to `vtable for llvm::PoolAllocateGroup' /mounts/maute/disks/0/criswell/llvm22/projects/safecode/Debug/lib/libpointerchecks.so: undefined reference to `typeinfo for llvm::PoolAllocateGroup' Does anyone know what I might be doing wrong? Thanks in advance. -- John T.
On Apr 7, 2008, at 1:54 PM, John Criswell wrote:> > /localhome/criswell/llvm22/projects/llvm-poolalloc/Debug/lib/ > libpoolalloc.so: > undefined reference to `vtable for llvm::PoolAllocateGroup'> Does anyone know what I might be doing wrong?The usual answer, you need to define all virtual functions, in particular, those in the PoolAllocateGroup hierarchy.
Mike Stump wrote:> On Apr 7, 2008, at 1:54 PM, John Criswell wrote: > >> /localhome/criswell/llvm22/projects/llvm-poolalloc/Debug/lib/ >> libpoolalloc.so: >> undefined reference to `vtable for llvm::PoolAllocateGroup' >> > > >> Does anyone know what I might be doing wrong? >> > > The usual answer, you need to define all virtual functions, in > particular, those in the PoolAllocateGroup hierarchy. >That fixed it. Thanks! -- John T.> _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >