问题标签 [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 投票
3 回答
6221 浏览

c - 使用 libdl 的 C 中的插件架构

我一直在玩弄,用 C 语言编写了一个小型 IRC 框架,我现在要用一些核心功能来扩展它——但除此之外,我希望它可以通过插件进行扩展!

直到现在,每当我写一些与 IRC 相关的东西(我写了很多,现在用大约 6 种不同的语言......我着火了!)并且实际上继续实现插件架构时,它是在一种解释语言中有这样做的设施(阅读:滥用),比如eval在 Ruby 中干扰整个脚本文件(糟糕!)。

现在我想在 C 中滥用一些东西!

基本上我可以做三件事

  1. 在我的程序中定义一个简单的脚本语言
  2. 使用现有的,嵌入解释器
  3. 使用 libdl 在运行时加载 *.so 模块

我喜欢第三个,如果可能的话,我宁愿避免其他两个选项。也许我是某种受虐狂,但我认为这对学习目的既有趣又有用。

从逻辑上思考,明显的“痛苦链”将是(从最低到最高)2 -> 1 -> 3,原因很简单,libdl 正在处理可以(并且将会)更频繁地在我面前爆炸的原始代码.

所以这个问题问你,stackoverflow 的同胞们,你认为 libdl 能胜任这项任务,甚至是一个现实的想法吗?

0 投票
3 回答
7271 浏览

iphone - Xcode for iPhone 中静态库和动态库的区别

XCode 中的静态库和动态库有什么区别?为什么 Apple 不允许我们在 iOS 应用程序中使用动态库?

0 投票
2 回答
576 浏览

macos - 翻译 makefile 以生成静态 libxxx.a 而不是动态 libxxx.dylib

我正在编译一个库(http://www.antisphere.com/Wiki/tools:anttweakbar),但在我的 Mac 上使用其包含的 makefile 发出“make”会生成一个动态库(.dylib)。我宁愿有一个静态库,以便我可以将它与我的应用程序一起部署。翻译makefile中的标志以生成静态库是否容易/可能?

似乎“make”只是编译和链接一些 C/C++ 代码。

0 投票
2 回答
19528 浏览

linker - CMake:如何生成“尽可能静态”的二进制文件

我想控制在 CMake 中找到/链接到我的二进制文件的库的类型。最终目标是生成“尽可能静态”的二进制文件,即静态链接每个确实有可用静态版本的库。这一点很重要,因为它将在测试期间实现跨不同系统的二进制文件的可移植性。

ATM 这似乎很难实现,因为 FindXXX.cmake 包,或者更准确地说,find_library 命令总是在静态和动态都可用时选择动态库。

关于如何实现此功能的提示 - 最好以优雅的方式 - 将非常受欢迎!

0 投票
1 回答
8558 浏览

c++ - 在 Xcode 中构建和使用 DYLIB

我正在尝试在 Xcode 中构建一个 .dylib。当前构建了 .dylib,但是当我将 .dylib 拖到另一个项目中并尝试 #import .dylib 中的一个标头(Seeker.h)时,我收到此错误:

*:没有这样的文件或目录
Seeker.h:没有这样的文件或目录

该项目在此处作为 Xcode 项目提供。

我可以确认标头确实位于 .dylib 构建后的路径中,但至于如何处理它我不知道。我对 .dylib 文件的唯一经验是 Mac OS X 中内置的框架,例如 libsqlite3.dylib,它运行良好。我能在 .dylib 文件上找到的所有教程都没有介绍如何以合理的方式将它们与 Xcode 一起使用。它们都依赖于复杂的脚本或依赖于机器的配置,这对我们不起作用。

所以基本上我需要一个从头到尾的逐步过程,成功构建 .dylib 并以不依赖于为不同用户更改构建设置的方式成功地将其包含在另一个 Xcode 项目中。换句话说,一种行之有效的方式,当我们将两个项目都分发给我们的团队成员时,它就会奏效。

0 投票
1 回答
763 浏览

linux - 通过 .deb 将静态/动态库分发到 Linux

我创建了一个要分发的静态和动态库。我应该如何制作我的 .deb 文件,以便将标头放在 /usr/include/ 中,将库放在 /usr/lib/ 等中。

0 投票
1 回答
98 浏览

objective-c - 将项目从类集合转换为 .dylib 的过程?

我已经在一个宠物项目上工作了几个星期,并开始认为它可能会被我自己和几个朋友使用。目前,它实际上只是一个 XCode 项目中的一堆 Objective-C 类,我一直在使用 main() 来测试各种特性。如果我将它打包为 .dylib 文件,那么在项目中使用这个库似乎是最容易的。正如我在其他语言中发现的那样,事后才这样做是一件令人讨厌的事情,理想情况下会被外包到最低级别。:)

我对 Objective-C/Xcode 世界很陌生,但是根据 Apple 的“动态库编程主题”,我的印象是,这实际上只是将我的接口文件重新调整为以下格式的问题:

(取自引用的 Apple 文档)。

其中:我正在定义一个协议,其中包含我希望包含在 .dylib 中的类的方法,然后定义一个接口,该接口将实现上述协议的 NSObject 子类化并在此处声明 ivars。

几个问题:

我是否可以从协议中省略我不想“导出”到 dylib 的方法?

如果我在 dylib 中有一个类的子类,我是否为子类创建另一个协议,并使新创建的类的超类实现该协议?例如,如果我是 person 的子类:

这可能是一个非常微不足道的问题,但我试图弄清楚我需要做的所有事情,然后再将所有课程移至 .dylib。

0 投票
1 回答
2411 浏览

objective-c - 什么是静态链接和动态链接

可能重复:
静态链接与动态链接

你好 ,

请在这混乱中释放我

1)什么是 *静态和动态链接?*静态和动态库?

2)这两件事有什么互动吗?

3)静态库链接作为静态和动态库链接动态 - 率?

基于Objective-c的答案可能很好

0 投票
2 回答
6323 浏览

c++ - 创建和使用简单的 .dylib

在 Xcode 中创建和使用 .dylib 的最基本方法是什么?

这是我到目前为止所拥有的:

文件:MyLib.h

文件:MyLib.cpp

我将项目编译为动态库,但如何将它与其他项目一起使用?我试过这样的事情:

文件:MyLibTester.cpp

但这给了我 400 多个错误(主要是Stray \123 in program. Using<libMyLib.dylib>给了我一个file not found错误。

0 投票
4 回答
4402 浏览

boost - 静态和动态(调试)库之间的大小差异以及对最终 exe 的影响

在我今天下载了预建的 boost 库之前,我从来没有考虑过静态库和动态库之间的大小差异。我发现 boost 的静态库比动态库大得多。

例如,调试多线程boost wave静态库是97.7 mb大小,而同一个库,但动态的,只是1.4 mb大小(包括导入库和dll)!这是一个巨大的差异。这是为什么?

第二个问题,如果我静态链接到wave图书馆。这是否意味着我的可执行文件的大小会膨胀到超过97.7 mb?