问题标签 [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 回答
3252 浏览

iphone - 如何加载存储在静态库中的图像

在我的 iphone 应用程序中,我正在链接一个包含目标 c 文件和图像的静态库。是否可以从静态库中加载图像?我试过了

但显然图像不在主包中,它在静态库中,并且 NSBundle 类似乎只提供对主包和具有已知路径的包的访问。有没有办法从 iPhone 上的静态库中加载图像?

0 投票
5 回答
26278 浏览

visual-studio - 有没有办法确定使用哪个版本的 Visual Studio 来编译静态库?

我有一组静态库 (.lib) 文件,其中一个可能是使用不同版本的 Visual Studio 构建的。这导致链接所有项目的代码生成失败。有什么方法可以确定使用哪个版本的 Visual Studio 来编译静态库?

0 投票
2 回答
1504 浏览

c++ - 在另一个静态库中包含(链接)静态库的问题

我将尝试尽快解释我想要做什么:

一个使用静态库的项目,该项目具有另一个作为依赖项。它生成一个名为 MyProject 的项目,链接在 MyLib1 上,链接在 MyLib2 上。下面是编译顺序:

  • 我的Lib2
  • MyLib1(链接到 MyLib2)
  • MyProject(链接到 MyLib1)

我正在使用 Visual Studio 2008,但在定义包含时遇到了一些麻烦。链接时,我使用属性“附加包含目录”(在项目属性 C/C++ 节点上)。这似乎在 MyProject 和 MyLib1 之间有效,但在 MyLib1 和 MyLib2 之间无效。例如:我在 MyLib2 中有一个名为 foo.cpp 的文件;使用 #include "foo.cpp" 使视觉工作室告诉 foo.cpp 是未知的(缺少文件或文件夹)。

为了确保它不是我给出的错误路径,我做了很多尝试,如下所示:将命令行中显示的路径(用于编译库)复制粘贴到 win explorer:我很好地看到了我的第二个库的源代码。我已经多次重制该项目,每次我使用不同的名称(迫使我注意这一点),一切似乎都定义明确(但不是“包括”)。

我真正找到使它起作用的唯一方法:使用 #include "c:\\foo.cpp"作为包含...非常适合可移植性!

这是解决方案的 Zip,您可以自己测试并告诉我出了什么问题:MyProject.rar

感谢您花时间帮助我!露西伯拉德

0 投票
6 回答
5827 浏览

macos - 版本交叉编译程序中的静态库

我有一个试图在 Mac 上运行的 unix 命令行应用程序(带有大的讨厌的 makefile)。我在 10.6 系统上编译它,当然还有所有适当的库。部署环境是 10.5 系统,没有额外的库。

我在没有 -dynamic 的情况下编译,它似乎有正确的静态库。当我在 10.6 系统上运行它时,它可以工作。但是,当我在 10.5 系统上运行它时,我得到:

dyld:未知所需的加载命令 0x80000022

当我使用 10.5 xcode 为 10.6 系统编译东西时,我遇到了同样的错误,所以它看起来像是版本不匹配类型的问题。但是,我使用了 gcc-4.0,并且

$CFLAGS = -isysroot /Developer/SDKs/MacOSX10.5.sdk -mmacosx-version-min=10.5

所以它应该设置为 10.5 ......有什么想法吗?

谢谢

编辑一个古老的问题:

我在另一台计算机上遇到了完全相同的问题。这次我在 10.5.8,完全更新,同样的可执行文件仍然在 10.6 上工作。

自从我问这个问题以来的几个月里,有没有人对此有任何运气?

0 投票
2 回答
2074 浏览

iphone - 强制包含不导出任何符号的静态库对象文件 (GCC/iPhone)

我正在创建一个用于 iPhone 应用程序的静态库。它包含许多不导出符号的源文件,它们所做的只是实例化一个类的静态实例,然后在其构造函数中运行一些代码,这些代码在其他地方向中央管理器类注册各种东西。当代码作为标准 iPhone 应用程序的一部分构建时,这一切都可以正常工作,但是当它被分成静态库时,这些文件不会进入最终的应用程序二进制文件,因此它们包含的私有类实例的构造函数不会不要跑,这会导致问题。对于静态库构建和最终应用程序构建,我已经关闭了与死区剥离等有关的每个构建选项。

不久前,我在 Metrowerks 编译器上遇到了这个问题,但是在那种情况下,即使代码被构建到没有任何中间库的单个应用程序中,它也会发生。解决方案非常简单:只需__declspec(force_export)在私有类实例上使用,一切都很好。

GCC / iPhone是否有任何等价物?我正在使用带有 GCC 4.2 的 Xcode 3.1.4 并针对 iPhone OS 3.1。或者,是否有某种方法可以告诉应用程序链接静态库中的每个对象文件,而不管它是否被显式引用?我已经确认使用ar全套目标文件将其放入静态库中。

提前致谢。

0 投票
1 回答
1309 浏览

c++ - 链接另一个静态库和qmake的静态库?奇怪的链接错误

我有两个 qt .pro 文件,都使用 lib TEMPLATE 和 staticlib CONFIG。第一个库(我们称之为“核心”)是第二个库的依赖项(我称之为“foo”)。其实 foo 中有一个类扩展了 core 中的一个类,我将这个类称为 Bar。

当我在另一个项目(不是库)中实例化类(在 foo 中定义和实现,但从核心扩展类(Bar))时,我收到以下链接错误:

基本上,链接器无法在 foo lib 中派生的核心 lib 中找到类,但仅当我在使用这两个库的第三个项目中实例化该类时。这种行为是预期的吗?

问候,丹 O

更新:在使用派生类之前,我通过在第三个项目中直接调用 Bars 构造函数来修复它......有人知道我为什么需要这样做吗?

0 投票
2 回答
1608 浏览

haskell - Cygwin 中的库“rt”和“dl”

也许这很愚蠢,但我无法找出我必须在 Cygwin 中安装哪个包来修复以下缺失的库:

当您收到文件 xxx 丢失的反馈时,任何想法或您通常如何找出要安装的软件包(我记得在 gentoo 中这非常简单)...

0 投票
3 回答
1063 浏览

objective-c - 如何将非静态变量从接口移动到objectiveC中的实现?

我正在尝试编写一个可可触摸静态库。为了简单起见,我不想在我的接口文件中使用私有变量。现在的代码如下所示:

接口文件(myView.h):

实现文件(myView.h)

这个 NSTimer 指针只是一个私有变量,所以我尝试了这个:( 不工作)

接口文件(myView.h):

实现文件(myView.h)

它似乎有效,但事实证明计时器现在是一个静态变量。

我做错了什么还是没有解决方案?

0 投票
1 回答
643 浏览

visual-studio - Visual Studio 2008 中的新手 C 运行时库问题

我刚刚通过告诉我的 VS 2008 项目忽略项目属性菜单的链接器->输入部分中的 libc.lib 来编译和运行应用程序。在我这样做之前,VS 给了我旧的“致命错误 LNK1104:无法打开文件 'LIBC.lib'”消息。

如果我忽略 crt,我不确定这个应用程序是如何编译的,但这显然是我的无知。

我检查了 C/C++ 项目设置,运行时库设置读取多线程调试 dll(/MDd 标志)——所以我必须在某处链接到 VC80*.dll。

我不确定如何。我一直对visual studio中的crt设置感到困惑,静态或调试,多线程与否。通过阅读这个网站和谷歌,我现在对我的理解有了一个粗略的改进——如果你使用 dll,你没有那么多的代码膨胀,当程序需要它们时链接,可以通过覆盖 dll 来应用 crt 更新。换句话说,使用 dll 的常见原因。

但是多线程版本与单线程版本有什么关系?如果我碰巧与静态版本链接,我不能使用 win 线程或 pthreads,这意味着什么?

我听说过但从未完全关注过的另一件事——在一个 dll 中分配一个对象并从另一个 dll 中重新分配它时存在问题,或者类似的事情,与交叉分配有关。我解释得不是很好(因为我不明白),但我希望你明白我的意思,并能解释那里发生了什么。这是否意味着在我的程序中我不能在 dll 中的类上调用 new ObjectX() ?不能这么说吧?

感谢大家!

0 投票
1 回答
5271 浏览

c++ - 在 QT Creator 中构建时强制重新链接

我有一个包含几个库和一个主应用程序的子目录项目。当我在其中一个库中更改某些内容时,主应用程序不会与它们重新链接.. 有没有人在使用 QtCreator 时让应用程序自动重新链接其静态链接的库?