【问题标题】:How to add 2 different C libraries with same name but having entirely different functionalities without changing the name?如何在不更改名称的情况下添加 2 个具有相同名称但功能完全不同的 C 库?
【发布时间】:2020-05-30 22:52:17
【问题描述】:

如何在不更改名称的情况下添加两个具有相同名称但功能完全不同的 C 库?

例如,一个软件产品带有名为 libabc.so 的库 而且我的 lib 也具有相同的名称 libabc.lib。

那么,我怎样才能同时使用这两个库,而不会在运行时发生冲突

【问题讨论】:

  • 找到其他方法来做你需要做的事情。虽然可能有一些特定于操作系统的骇客来实现它,但这不值得麻烦。更容易重命名您自己的库。
  • .so 通常用于 Linux,.lib 用于 Windows。你确定他们是同一个平台的吗?您使用的是哪个操作系统和编译器?只是库名称相同还是它们也包含重叠的符号名称?
  • 让我问你一个反问......你认为,你的图书馆的客户会在哪里放置所说的图书馆?不能和第三方的libabc放在同一个目录下,因为colision这个名字……所以,两个同名的库甚至在之前你真的要链接之前就很头疼了反对他们。最好重命名你的库...
  • 如何为静态库创建一个符号链接,以便您可以将它与另一个名称链接? (我不知道它是否有效,但我建议尝试一下)

标签: c++ c lib


【解决方案1】:

而不是使用-labc 链接,而是使用完整的文件库文件路径,例如/usr/local/lib/libabc.a ./mylib/libabc.a

如果你这样做了,那么它们同名的事实就无关紧要了。

如果两个库都导出具有相同名称的符号,可能会发生冲突。

如果头文件也具有相同的名称(例如 abc.h),您的 #include 语句可能还需要完整路径以确保您包含正确的文件。

【讨论】:

    猜你喜欢
    • 2011-11-01
    • 2022-01-11
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多