【问题标题】:C++ Creating a standalone library in linux and using it in another programC++ 在 linux 中创建一个独立的库并在另一个程序中使用它
【发布时间】:2012-12-09 16:50:41
【问题描述】:

我正在尝试为 Linux 创建一个共享库,这样:

  • 其他程序可以使用它的函数和对象
  • 代码对最终用户不可见

我所做的是用 Eclipse 创建一个共享库。这个库使用 pthreads。 我生成了 .so 和 .lib。 .lib 位于 LIBRARY/Lib 中,而 .so 位于 LIBRARY/Release 中。

然后我创建了另一个应该使用该库的项目,并给出了 .lib 文件的路径和 .h 文件的路径,该路径仅包含库的所有必要 .h 文件。 一切似乎都正常,但是当我运行程序时它崩溃了。调试时,我收到以下消息:

在“pthread_mutex_lock.c”中找不到源文件

找到文件或编辑源查找路径以包含其位置。

怎么了?有人可以帮帮我吗?

编辑:我什么也没做,现在我有一个不同的错误,在前几行之前:

在“random.c”中找不到源文件

找到文件或编辑源查找路径以包含其位置。

【问题讨论】:

  • 安装 libpthread 开发和调试包(通常是“glibc-debug”或类似的一部分)。
  • 我已经安装了所有的库。这些项目作为“独立程序”在 Netbeans 下运行良好。然后我决定将它移到 Eclipse 下并将其转换为库,这就是我遇到的问题
  • pthread_mutex_lock.c 是来自 pthreads 库的文件。您可能正在调用该文件中的一个函数,很可能是pthread_mutex_lock()。您可以尝试安装 glibc sources 包,但首先尝试向上堆栈,看看您是否可以检查自己的代码。也许你会在那里看到一个错误。 pthread_mutex_lock() 中导致崩溃的错误不太可能出现。
  • 我已经安装了所有必要的库,并且该项目在 Netbeans 下独立运行。我可能在 Eclipse 的项目设置中出错了,但我不明白是什么。
  • 确保初始化 pthread 互斥锁,并且确保不要在构造函数中使用互斥锁。

标签: linux eclipse shared-libraries


【解决方案1】:
  • 其他程序可以使用它的函数和对象
  • 代码对最终用户不可见

这两个目标直接相互矛盾,同时实现这两个目标在 Linux 上是不可能的。

如果某些程序可以使用您的库,那么我可以编写一个新程序也可以这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 2015-07-23
    相关资源
    最近更新 更多