【问题标题】:How to ignore the main method from a dynamic linked library in C++如何忽略 C++ 中动态链接库中的主要方法
【发布时间】:2012-03-14 09:13:01
【问题描述】:

在我们的应用程序中,我们使用了几个动态链接库。我们最近更新了其中一个库的版本。自这个新版本以来,该库的开发人员提供了一个 main 方法(只不过是打印 Hello World)。

问题是我们正在使用 GTest 和 GMock,它们会生成自己的 main 方法。当我们现在运行我们的测试二进制文件时,我们只是得到“Hello World”,所以我们采用了错误的 main 方法。

我们如何强制使用测试的主要方法?

更新:这似乎是 GMock/GTest 问题。 main 方法是正常生成的,但不是这样,因为它现在找到了一个已经存在的 main 方法。

【问题讨论】:

    标签: c++ shared-libraries googletest googlemock


    【解决方案1】:

    在你的情况下没有办法。您必须从共享库中删除主要内容。它根本不属于那里。

    【讨论】:

    • 我完全同意你的说法。让开发人员从该库中更改它将是可怕的。我希望有一个快速而肮脏的技巧来“忽略”该主要方法。
    • @W.Goeman 如果它是一个开源库,那么你可以自己做,不是吗?如果它是一个商业图书馆,那么他们应该这样做。无论如何,共享库定义 main() 是一个严重的问题。
    • 我们联系了该库的开发人员,他们承诺修复。库中的主要方法似乎确实是一个严重的问题:)
    • 我不认为 /lib/x86_64-linux-gnu/libc.so.6 有一个 main 是一个问题也运行你可以“人工检查”版本的库(例如 ./libfoo .so 打印构建版本)。我想这更像是一个图书馆链接顺序问题
    【解决方案2】:

    我有两个具有主要方法的库的类似问题,通过将库的顺序更改为链接器来解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多