2011-09-05 133 views
0

我有问题,我想用lib hqp编译一些软件。这个lib使用adolc,但是旧版本的一个弃用函数。由于我只有新版本,所以缺少一个类(adoublev),并且出现编译错误。现在我尝试写一个包装,但在这里我得到错误。C++:未定义的函数参考

之前:我直到现在还没有意识到问题,并编译了新版本的adolc hqp。我写了一个简单的adoublev类,它实现了必要的操作符(operator [])。

现在我想编一个例子。我得到

Prg_T2Topt.o:(.rodata._ZTV10Prg_T2Topt[vtable for Prg_T2Topt]+0x20): 
    undefined reference to `Omu_Program::consistic(int, double, adoublev const&, adoublev const&, adoublev&)' 

注意:Prg_T2Topt。*是我的例子,Omu_Program是hqp的一部分。

为什么hqp的第一次安装不会以关于adoublev(gcc/g ++ used)缺失声明/定义的错误而告终? 我是否需要更新hqp,以便不再使用adoublev?

为什么编译我的示例会导致关于consistic的错误,即使此示例中没有实现此方法?

的例子可以在http://codepad.org/Cv0tdoyShttp://codepad.org/ezQQPUg4找到(有点冗长)

+0

一般来说,编译器(或者说连接器)不会呻吟一下未定义的引用,除非有东西试图使用它。可能发生的事情是,你正在使用的库函数之一是试图调用它,当构建库时,它不会因为编译而不是链接而呻吟。 – Dan

回答

0

由于类Prg_T2Topt基于Omu_Program,它继承Omu_Program的方法,包括consistic(),由于你的类没有重载consistic( ),编译器试图使用Omu_Program :: consistic()。

你链接了哪些库?看起来你在链接阶段错过了一些东西。

+0

是的,@istepura是正确的......你在连接阶段缺少一些东西......你需要告诉你的编译器库(你正在使用的)在哪里...... – c0da