问题标签 [shared-libraries]

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 回答
358 浏览

dll - Unix 和 Windows 中的 Dlls 卸载命令

我有 2 个 dll:A 和 B。

从 dll A 中的代码,我动态加载 dll B(在 Unix 上使用 dlopen,在 Windows 上使用 LoadLibrary)。是否保证B会在A之前被卸载

Unix 和 Windows 的行为有什么区别吗?

0 投票
2 回答
19317 浏览

linux - 共享库的 Makefile?

我刚刚编写了一个 Makefile 来构建一个共享库,类似于以下内容:

当这似乎是一个常见的操作时,我喜欢避免执行显式操作,但似乎没有隐式规则或其他内置函数来标准化它。我目前在 Linux 上使用 GNU Make,但在 OS X 上也需要它。

编辑:我问的是制作规则而不是编译器/链接器标志。

你能推荐干净、可重用的 Makefile 规则来构建共享库吗?也许是%.so:.c.so:类型规则?

0 投票
2 回答
36257 浏览

c - 合并多个 .so 共享库

假设我有 a.so 和 b.so。我可以将 c.so 生成为具有 a 和 b 导出的所有函数的单个共享库,当然可以解决所有内部依赖关系(即 a.so 调用的 b.so 的所有函数,反之亦然)?

我试过

但它不起作用。

如果我将 ao 和 bo 存档在 aa 和 ba 中也是如此(不应该修改 ao 和 bo),然后执行

谢谢

0 投票
9 回答
8112 浏览

dll - 使用 DLL 的优缺点是什么?

Windows 仍然使用 DLL,而 Mac 程序似乎根本不使用 DLL。使用这两种技术有好处还是坏处?

如果一个程序安装包含它需要的所有 DLL 以使其 100% 正常工作,它是否与静态链接所有库相同?

0 投票
3 回答
10054 浏览

linux - nm 报告符号已定义,但 ldd 报告符号未定义

我有一个链接问题。我需要链接一个共享库libfoo.so,该库依赖于read我想在文件 read.c 中定义自己的函数。

我将所有内容编译并链接在一起,但在运行时出现错误

nm 报告符号已定义

但 ldd 报告符号未定义

是什么赋予了?libfoo.so 是一个共享库这一事实有什么问题吗?

0 投票
2 回答
5764 浏览

c++ - Linux 共享库 c++

我有一个共享库 wise.so。我如何在我的程序中使用它?我需要包含该库的标题吗?

我在 Linux 下使用 Eclipce。我已经使用 -L 和 -l 设置了库的路径。但是我的功能在程序中不可见。

你能解释一下共享库是如何工作的吗?

问候。

编辑:

我收到以下错误:

标题:

0 投票
4 回答
5636 浏览

c++ - 在 Windows 和 LINUX [C++] 中创建程序库

我打算在我的 C++ 程序中使用库。开发正在 Linux 上进行,但应用程序旨在同时在 Linux 和 Windows 上编译。我理解 Windows 中共享库(.so)的直接等效项是 DLL,对吗?

在使用 g++ 的 Linux 中,我可以使用-fPIC-shared标志创建共享库。AFAIK,共享库不需要其他代码更改。但在 Windows DLL 中情况有所不同。在那里我应该指定必须使用dllexport导出的函数,对吗?

我的问题是我该如何处理这种情况?我的意思是dllexport在 Linux 中无效,编译器会报错。但它在 Windows 中是必需的。那么如何编写一个可以在两个平台上编译而无需任何代码更改的函数呢?

使用的编译器

  • g++ - LINUX
  • VC++ - 视窗

任何帮助都会很棒!

0 投票
2 回答
8279 浏览

c++ - 对共享库函数的未定义引用

我已经在 Linux 中实现了一个共享库并尝试对其进行测试,但我收到一个错误“未定义对 `CEDD(char*)' 的引用”。

我使用具有以下参数的 Eclipse:

  • 包含文件的路径(这里一切正常)
  • 库的路径及其名称。路径正确,名称为WISE_C(全名:libWISE_C.so)

我的代码:

我用于测试的测试程序:

头描述符.h:

具有所需功能的 Descriptor.c 的一部分:

我在做什么?我在互联网上阅读了很多文章,但我没有找到解决方案。

对“CEDD(char*)”的未定义引用是编译器或链接器错误?

0 投票
2 回答
5489 浏览

c++ - 使用 Eclipse 进行 C 编程(库之谜)

当我将一个库连接到我的程序时,Eclipse 不会生成任何可执行文件,我只得到一个目标文件。当我断开库与程序的连接(删除所有路径和库函数)时,我得到一个可执行文件。

但是,在第一种情况下我没有收到任何错误。

出了什么问题?

我使用:Linux、C、Eclipse。

日志:

**** 为项目 Wise_test_C 构建配置调试 ****

0 投票
2 回答
84 浏览

svn - 如何处理很多项目中需要的库(+ svn)

早上好!

我们有一个 SVN 存储库,其中包含一个 VS 解决方案。在这个解决方案中,有许多 Web 项目,每个项目都使用一个 JavaScript-Lib,它是在一个额外的项目中开发的(我们称之为它DemoWeb)并手动部署到其他 Web 项目。
这种结构有很多缺点:

  1. 您可以在部署时忘记要复制到的项目。
  2. 你可能会错过一些文件
  3. 您在 SVN 存储库中多次拥有相同的 .js 文件
  4. ...

我认为这种情况(许多项目使用相同的库 - 例如 JavaScript、.dll 文件、图像......)很常见,所以我问你:
你如何处理它?
你如何摆脱这些缺点?
如何不丢失 VS 中 IntelliSense 的引用(例如 CssClass-Checking)?