C++:对函数的未定义引用

发布于 2024-12-02 18:24:45 字数 824 浏览 0 评论 0原文

我有问题,我想使用 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/Cv0tdoyShttp://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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

爱的故事 2024-12-09 18:24:45

由于您的类 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文