gpt4 book ai didi

c - ld 手动解析多个定义

转载 作者:行者123 更新时间:2023-12-05 01:48:14 24 4
gpt4 key购买 nike

我有一个单元测试文件,它是大型框架的一部分。我在测试中使用的一些框架类是模拟版本,用于返回我测试所需的值。那就是我在自己的c源文件中重新定义了一些框架类。

有没有办法强制 Linux 上的 ld 使用我自己的框架类对象,而不是从链接器行中删除框架库?我无法真正删除这些库,因为我仍在使用一些未经修改的框架对象。

这是链接错误:

/usr/lib/gcc/x86_64-redhat-linux/4.4.5/../../../../include/c++/4.4.5/bits/char_traits.h:250: multiple definition of MyClass::MyClass'
build/Debug/GNU-Linux-x86/tests/tests/my_ut.o:/usr/lib/gcc/x86_64-redhat-linux/4.4.5/../../../../include/c++/4.4.5/exception:62:
first defined here ../frameworklib.a(MyClass.o): In function
MyClass':

最佳答案

事实证明,无论对象在命令行中的顺序如何,我的 ld 版本在多个定义的情况下都会以错误退出。 -z muldefs改变这种行为。

ld --version GNU ld version 2.20.51.0.2-5.20.el6 20091009 Copyright 2009 Free Software Foundation, Inc.

关于c - ld 手动解析多个定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822700/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com