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

linux - 使用“ar”组合 .o 和 .a 文件 (Linux)

我正在尝试创建一个包含目标文件和现有静态库的单个静态库,这些静态库都已在构建过程的早期编译。有没有一种简单的方法可以使用“ar”来做到这一点,还是我需要解压(ar x library_name)每个库并将其目标文件添加到我的统一库中?

0 投票
4 回答
3709 浏览

c - 我需要静态库来静态链接吗?

在“C”上,Linux,

我需要静态库来静态链接,还是我拥有的共享库就足够了?如果不是,为什么不呢?(它们不包含相同的数据吗?)

0 投票
4 回答
6976 浏览

iphone - Interface Builder 看不到静态库中的类

我已将一些 UIView 子类重构为静态库。但是,当使用 Interface Builder 为使用静态库的项目创建视图组件时,我发现它不知道库类。我需要做什么才能使类接口对 Interface Builder 可见?

更新:正确答案是指将标题拖到“XIB 浏览器”中。'.h' 文件可以从查找器窗口拖动到此图像中标识的窗口区域:

替代文字 http://img211.imageshack.us/img211/1221/xibbrowser.png

0 投票
2 回答
1779 浏览

c++ - 如何模仿静态库的“应用程序中全局变量的多个实例”行为但使用 DLL?

我们有一个用 C/C++ 编写的应用程序,它被分解为一个 EXE 和多个 DLL。这些 DLL 中的每一个都使用相同的静态库 ( utilities.lib)。

实用程序静态库中的任何全局变量实际上在应用程序的运行时都会有多个实例。每个链接到的模块(即 DLL 或 EXE)将有一份全局变量的副本utilities.lib

(这都是众所周知的,但值得回顾一下静态库在 DLL 上下文中如何表现的背景知识。)

现在我的问题.. 我们想改变utilities.lib它,使它成为一个 DLL。它变得非常庞大和复杂,我们希望以 DLL 形式而不是.lib形式分发它。问题在于,对于这个应用程序,我们希望保留每个应用程序 DLL 在实用程序库中拥有自己的全局变量副本的当前行为。 你会怎么做呢? 实际上我们并不需要所有的全局变量,只有一些;但如果我们得到它并不重要。


我们的想法:

  1. 我们关心的库中的全局变量并不多,我们可以用一个访问器包装它们中的每一个,该访问器执行一些时髦的技巧来试图找出哪个 DLL 正在调用它。大概我们可以遍历调用堆栈并找出HMODULEfor 每个函数,直到找到一个不是utilities.dll. 然后我们可以根据调用 DLL 返回不同的版本。
  2. 我们可以要求调用者在调用utilities.dll. 实用程序 DLL 然后可以使用这个全局变量值来确定调用上下文。
  3. 我们可以找到一些utilities.dll在运行时多次加载的方法。也许我们需要在构建时制作多个重命名的副本,以便每个应用程序 DLL 都可以拥有自己的实用程序 DLL 副本。这首先否定了使用 DLL 的一些优点,但是还有其他应用程序不需要这种“静态库”样式行为,并且仍然可以utilities.libutilities.dll.
0 投票
5 回答
10042 浏览

iphone - 为什么找不到静态库头?

我已经使用Clint Harris 的教程来设置项目之间的代码共享,并且在我的计算机上一切正常。但是在我同事的机器上,编译器在构建时似乎没有从静态库项目中找到头文件。

我的同事通过克隆 git 存储库获得了我的项目。我们已经检查了所有相关的构建标志和 XCode 设置 n 次,但该项目只是拒绝在他的机器上编译。

这是我要求我的同事做的,主要是从教程中复制和粘贴的:

  1. 确保项目目录的完整路径中没有空格。
  2. 在项目目录中,创建另一个名为“build_output”的文件夹。
  3. 在 XCode 中,在“XCode > Preferences”下选择“Building”选项卡并将“Place Build Projects in”设置为“Customized location”并指定您创建的公共构建目录的路径。
  4. 将“将中间构建文件放入”设置为“使用构建产品”。</li>
  5. 选择“Source Trees”选项卡并通过单击“+”按钮并填写列来创建一个新的 Source Tree 变量。在“设置名称”和“显示名称”中,输入[创建静态库的共享项目的名称]。在路径中,您将完整路径放入框架文件夹。

按照这些步骤,使用静态库的项目应该在他的机器上和我的机器上编译一样。但事实并非如此。基本上,他得到的错误是:

然后是由于缺少标头而导致的一串其他错误。

任何解决此问题的策略?或者任何有类似经历并且可以分享一些来之不易的知识的人?我总结的说明中是否缺少任何内容?编译静态库时是否需要在 Copy Headers 构建阶段设置 headers 的角色?

0 投票
1 回答
3898 浏览

iphone - 在 iPhone 中实现静态库

我在这个链接之后创建了一个静态库。

但是我在使用图书馆时遇到了问题。有关如何在 iPhone 项目中使用静态库的参考,我点击了此链接

但我仍在为“如何在任何其他 iPhone 项目中实现静态库?”而苦苦挣扎。问题。

谢谢你们。

0 投票
1 回答
2550 浏览

iphone - 如何解决链接错误 - 静态库 iPhone

我曾尝试在我的 iPhone 上制作一个静态库,但我无法在另一个项目中使用它。我收到此错误:

XML并且Ticker是我的类,我在静态库中使用它们,并且"MinutesToMidnight"是我正在使用这个静态库的项目。我认为这与链接器错误有关,请帮助我解决此问题。

0 投票
4 回答
3741 浏览

iphone - iPhone 设备 3.0 的静态库中的类别

我的静态库中有类别。任何应用程序开发人员都应将 -ObjC 标志设置为“其他链接器标志”以正确使用我的静态库。它适用于 iPhone 设备/iPhone Simulator 2.x 和 iPhone Simulator 3.0。但它会在 iPhone 设备 3.0 上崩溃。如本文所述,这是新的链接器错误。他们建议多使用一个链接器标志:-all_load。但是当我添加这个标志时,构建也会失败,因为有重复的符号。

如何在 iPhone 设备 3.0 的静态库中使用类别?有什么建议么?

0 投票
3 回答
2809 浏览

qt - 在 Qt 中包含一个库,为什么这不起作用?

这看起来应该很简单。我在 Qt 中编译了一个库(这个newmat 库),并生成了文件 libnewmat.a。现在我需要将此库集成到另一个项目中,但我无法让它工作。

我在 .pro 文件中使用 LIBS 变量尝试了一些不同的方法,包括:

我什至尝试在路径中使用正斜杠和反斜杠,但没有任何区别。我还包括此检查以确保实际找到该库:

所以我知道这不是问题。我不明白的是,当我 ctrl+f 编译器输出(显示 qmake 在命令行中使用的命令)时,我没有找到对该库的任何引用。出于某种原因,我的 LIBS 变量在命令行上没有任何区别,而这正是我所期望的。这是编译器输出的示例,如果有人想仔细检查,我希望在其中引用该库:

我怀疑这里缺少一些非常简单的东西。

我在 Windows Vista 上使用 QtCreator。

0 投票
2 回答
1193 浏览

iphone - iPhone SDK 3 EXC_BAD_ACCESS 与 openldap 库

希望可以有人帮帮我,

我正在尝试为我的 iPhoneOS3 上的应用程序构建 openldap,但是当我尝试使用库中的某些内容时,我收到此错误:

节目接收信号:“EXC_BAD_ACCESS”。

我跟着这个网站用 iphone gcc 编译了 openldap。所以我用这个构建了openldap:

我将 libldap.a、liblber.a 复制到我的项目中,并将所有标题复制为 ldap.h ....

在项目设置中,我有:

构建时一切都很好,但是我使用以下代码得到了上面的错误:

有人知道我能做什么吗?

谢谢