C++:对函数的未定义引用
我有问题,我想使用 lib hqp 编译一些软件。该库使用 adolc,但旧版本中已弃用的函数。由于我只有新版本,因此缺少一个类(adoublev),并且出现编译错误。现在我尝试编写一个包装器,但在这里出现错误。
之前:我直到现在还没有意识到这个问题,并用新版本的 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++)的错误? 我是否需要更新 hqp 以便不再使用 adoublev?
为什么我的示例编译时会出现一致性错误,尽管示例中没有实现此方法?
该示例可以在 http://codepad.org/Cv0tdoyS 和 http://codepad.org/ezQQPUg4 (有点长)
I have the problem, that I want to compile some software using the lib hqp. This lib uses adolc, but a deprecated function from an old version. As I only have the new version, one class (adoublev) is missing and I get compile errors. Now I try to write a wrapper but here I get errors.
Before: I was till now not aware of the problem and compiled hqp with the new version of adolc. I wrote a simple adoublev class that has the necessary operators implemented (operator[]).
Now I want to compile a example. I get
Prg_T2Topt.o:(.rodata._ZTV10Prg_T2Topt[vtable for Prg_T2Topt]+0x20):
undefined reference to `Omu_Program::consistic(int, double, adoublev const&, adoublev const&, adoublev&)'
Notice: Prg_T2Topt.* is my example and Omu_Program is part of hqp.
Why did the first installation of hqp not end up with an error about a missing declaration/definition of adoublev (gcc/g++ used)?
Do I need to update hqp such that I does not use adoublev anymore?
Why does the compilation of my example result in an error about consistic even though this method is not implemented in the example?
The example can be found in http://codepad.org/Cv0tdoyS and http://codepad.org/ezQQPUg4 (is a bit lengthy)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于您的类 Prg_T2Topt 基于 Omu_Program,因此它继承了 Omu_Program 的方法,包括 consistic(),并且由于您的类没有覆盖 consistic(),编译器会尝试使用 Omu_Program::consistic()。
您正在链接哪些库?看起来您在链接阶段遗漏了一些东西。
Since your class Prg_T2Topt is based on Omu_Program, it inherits Omu_Program's methods including consistic(), and since your class does not override consistic(), compiler is trying to use Omu_Program::consistic().
What libraries are you linking with? It looks like you missing something during linking phase.