问题标签 [dynamic-library]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
652 浏览

c++ - 为什么我需要 libprofiler.so.0

我正在使用google prof工具,并将我的应用程序与-lprofiler链接,但是当我运行这个程序时:加载共享库时出错:libprofiler.so.0:无法打开共享对象文件:没有这样的文件或目录

相反,我与 -ltcmalloc 链接,然后在运行时不需要 tcmalloc.so。

我已经为分析器链接了静态库,为什么在运行时需要它?

0 投票
1 回答
230 浏览

android - 使用 Android NDK 工具链链接 2+ 静态库的顺序

这更像是一种普遍的好奇心。

假设我有几个静态类型的库:A、B 和 C。现在我想将另一个使用的库链接ABC到共享库 D。

让我们假设这是链接它们的正确方法:

当我将上一行更改为以下内容时会发生什么:

库会ABC在链接中使用两次还是在下面发生其他事情?

0 投票
0 回答
113 浏览

dll - 动态库是如何加载的?

各位朋友:我最近在做一个处理动态库加载的项目。并且必须在每个库(堆或堆栈)中分配一块内存,具体来说,同一库中的每个函数都可以看到内存。每个函数都可以通过地址直接访问它。

我本来打算在初始化函数中使用 malloc,并将内存地址设置为全局或静态...但是在这里我对动态库加载的理论以及如何分配变量感到困惑。特别是静态变量和全局变量,以及堆栈和堆..你能给我一些提示吗......非常感谢

0 投票
1 回答
726 浏览

c++ - 在 OS X 中创建和使用动态库

我们有一个用 C++ 编写的 Windows 应用程序,我们正在尝试将其中的一部分移植到 Mac OS X。我们的目标是将业务逻辑包装到一些库中,并在顶部为控制器和 GUI 构建一个 Cocoa 层。我们可能会有几个较小的应用程序使用相同的库,所以我们的第一个想法是为 C++ 代码使用动态库(除非有更好的方法)。但是,我们在实现这一目标时遇到了一些问题。我们的动态库符合要求(至少看起来是这样),并且我们得到了一个 .dylib 文件,我们在我们的应用程序中链接到该文件。问题是我们的应用程序根本找不到我们试图包含的任何 .h 文件。我们已经检查了 .h 文件是否正在导出,并检查了安装名称并确保库位于正确的目录中。此外,我们还关注了 Apple'

我的问题分为两部分:

  1. 是否有一些我们可能遗漏的明显步骤有助于公开我们应该先尝试的接口(即 .h 文件)?
  2. 我们确实怀疑问题可能出在我们在这个项目中继承的糟糕的 C++ 代码中。例如,有很多逻辑(方法的实现)直接写在 .h 文件中,在某些情况下甚至根本没有对应的 .cpp 文件。所以 .h 文件不仅仅是接口的描述。这可能不是(严重的)问题,因为我们的应用程序甚至无法从库中找到 .h 文件,它们至少应该存在。我们真的希望我们可以避免重写大量代码,因为需要移植的代码库非常大,而且(和往常一样)截止日期很近。

PS:到目前为止,我们只在 Xcode 4.2 中工作,还没有尝试使用命令行工具。

0 投票
1 回答
3136 浏览

elf - dylib 文件的含义是什么?

我的 C++ 编译器创建包含动态库的“dylib”文件。.dylib 和 .so 文件有什么区别?

Mach-O 格式的文件和 ELF 格式的文件有什么区别?我必须在 iOS(仅限静态库/Mach-O)和 Android(ELF)下构建文件以供以后使用。

谢谢!

0 投票
2 回答
240 浏览

objective-c - 在 Cocoa 应用程序中使用什么更好:动态库还是静态库?

我需要在 Cocoa 应用程序中使用一个库,并且可以使用它的动态 ( .dynlib) 或静态 ( .a) 版本。我来自 Linux 世界,很乐意使用 dynlib。但是,由于应用程序包将包含所有依赖项(包括 dynlib),我认为由于静态链接而拥有更大的二进制文件不会有问题。什么是最好的解决方案?

0 投票
1 回答
1955 浏览

c++ - C++ Qt:静态构建和外部 dylib

我一直在使用 Qt 在个人项目中做一些有趣的事情。我不是这方面的专家,所以如果这是一个愚蠢的问题(我猜我找不到任何有用的东西),请随时杀了我。

无论如何,我在 OSX 中,通常我使用带有以下命令的 shell 脚本针对静态版本的 Qt 编译最终版本:

到目前为止,如果我将编译后的二进制文件移动到另一台没有安装 Qt 的计算机上,一切正常!;)

昨天我开始玩一个公司提供的动态库,我已经将 dylib 包含在我的 .pro 文件中,如下所示:(我在项目文件夹中有 dylib 的副本)

当我“静态”编译它(使用上面的命令)并在另一台计算机上运行它时,我得到:

我注意到无论是否包含 dylib,我编译的二进制文件的大小都是相同的,所以,我用谷歌搜索了如何包含和外部 lib,有些人说我需要在我的 .pro 文件中添加“CONFIG += static”。我做到了,文件的大小增加了,但我仍然遇到同样的错误。

希望可以有人帮帮我。

0 投票
1 回答
216 浏览

makefile - 如何使用多个 Makefile 构建源代码树

仅供参考:所有工作都可以在 trac repo @ http://matthewh.me/scripts/browser/c/shared_library?order=name中看到


原来的帖子太长了。它本质上是问为什么我的 Makefile 在从根目录构建时没有找到任何源。


更新: 我确实发现路径都是相对于根目录的,无论生成文件放在哪里。

我现在构建了库,但是在编译应用程序时我得到了一个未定义的 main 引用。

我不会粘贴更新后的 makefile,但源代码树现在看起来像:

main.c 的内容是:

为什么编译器找不到main函数?


更新

您的修复有助于将未定义的引用传递给 main,但是我现在得到了另一个未定义的引用:

.so 文件中是否应该有一个可读的字符串表明 reverse 存在?

0 投票
1 回答
172 浏览

c - 不明白为什么我会遇到分段错误

当我将数组传递给带有签名的动态库中的函数时:

并从我的主要功能调用它:

使用 gdb 浏览代码,我可以看到程序在以下行崩溃:

请注意,i 的初始值在函数顶部声明为 0。

为什么会崩溃?


更新

请注意,它在本地工作。

0 投票
3 回答
655 浏览

linux - GNU/Debian Linux 和 LD

假设我有一个庞大的项目,其中包含多个动态库,这些库都将安装到 /usr/lib 或 /usr/lib64。现在假设其中一个库调用了另一个已编译库。如果我将两个相互依赖的库放在同一个位置,ld 程序是否能够允许这两个库相互调用?