g++链接器顺序问题

发布于 2024-10-19 18:12:14 字数 317 浏览 2 评论 0原文

我试图找出在 Qt Creator 中编译代码时导致错误的原因,即链接到我的外部构建的库中。

它抱怨“对 myclass::myclass(args) 的未定义引用”构造函数。

但是,此类已构建,并且目标文件包含在名为 common.a 的存档中。

引用 myclass 的代码实际上位于另一个库中,名为 CSV.a

所以,我知道我的 Qt 项目可以看到 CSV.a,并且我知道还有其他对 common.a 内容的引用,它并没有抱怨,但是显然,在这种安排中,CSV.a 中的内容看不到 common.a 中的内容。

我需要做哪些不同的事情?

I am trying to figure out something that is causing an error when trying to compile code in Qt Creator, that is linking in my externally built libraries.

It is complaining about an "undefined reference to myclass::myclass(args)" constructor.

However, this class has been built, and the object file was included in an archive called common.a .

The code that references myclass is actually in another library, called CSV.a

So, I know my Qt project can see CSV.a, and I know that there are other references to stuff in common.a that it is not complaining about, but apparently the stuff in CSV.a can't see the stuff in common.a in this arrangement.

What do I need to do differently?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

梦一生花开无言 2024-10-26 18:12:14

链接器使用命令行上列出库的顺序来确定实际需要哪些符号。您需要按照从最依赖到最不依赖的顺序对它们进行排序,以便它可以做出决定。例如,首先列出 CSV.a,以便编译器知道它需要在某处找到 myclass::myclass(args) 。然后列出common.a,然后编译器将找到并链接该构造函数。

The linker uses the order that libraries are listed on the command line to determine which symbols are actually needed. You need to order them from most-dependent to least-dependent so it can make that determination. For example, list CSV.a first so the compiler knows that it needs to find myclass::myclass(args) somewhere. Then list common.a second and the compiler will then find and link that constructor.

腻橙味 2024-10-26 18:12:14

您可能需要确保在链接器命令行上 CSV.a 后跟 common.a,而不是相反。

You may need to make sure that on the linker command line CSV.a is followed by common.a, not the other way around.

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