问题标签 [static-linking]

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

c++ - ImageMagick 与另一个项目的静态编译给出了链接器错误

我已经下载了 ImageMagick 源代码,编译了向导以创建用于静态链接的 Visual Studio 解决方案,并将静态库 Magick++ 项目包含在我的示例项目中(代码如下)。我还添加了对该项目的依赖项并将 .lib 文件包含在解决方案中,没有任何帮助。

这会产生几个链接器错误,例如:

未解析的外部符号“__declspec(dllimport) public: virtual __thiscall Magick::Image::~Image(void)” (__imp_??1Image@Magick@@UAE@XZ) 在函数 _main 中引用

为什么找不到实现?

我正在使用 Visual Studio 2010 Beta 2。

0 投票
1 回答
2246 浏览

qt - 静态编译 QWebKit 4.6.2

我尝试使用 MS VS 2008 静态编译 Qt+Webkit,这很有效。

但是,每当构建一个静态链接到 QWebKit 的项目时,我都会遇到这些错误:

我需要检查 Qt 项目选项中的某些内容吗?我检查了 QtCore、QtGui、Network 和 WebKit。

0 投票
4 回答
1317 浏览

linker - 未定义的引用

我正在尝试编译一些 fortran 代码,但遇到了一些令人困惑的链接错误。我有一些我编译并放入静态库的代码:

然后我尝试使用一些简单的测试代码对该库进行编译并获得以下信息:

它不在对象命名中,因为一切看起来都很好:

我也可以检查原始目标文件:

测试代码只包含对 bdout.o 中定义的函数的一次调用:

我无法弄清楚问题是什么。有没有人有什么建议?甚至可能只是一种追踪问题的方法?

干杯。

0 投票
1 回答
473 浏览

iphone - Iphone Link 静态库

我在 XCode 中创建了一个名为 TestLib 的静态库。然后我创建了一个简单的测试项目来使用这个库。我将 TestLib xcode 项目拖到我的测试项目中(框架部分 - 如果重要的话),并将 TestLib 设置为测试项目的直接依赖项。

我在从库中导入头文件时遇到问题,我只有 1 个(它是一个测试项目),名为 TestLibHeader.h,但无论我如何尝试导入它们,我都会收到编译错误,指出找不到头文件.

我哪里错了?

0 投票
2 回答
2218 浏览

c - 生成的 LLVM 可执行文件中不包含静态库

我正在尝试使用 LLVM 编译 ac 程序,但在获取一些静态库时遇到了麻烦。我已经使用 LLVM 成功编译了这些静态库,例如,存在 libogg.a 和 ogg.l.bc。

但是,当我尝试构建最终程序时,它不包含静态 ogg 库。我尝试了各种编译器选项,其中最值得注意的是:

这将产生以下输出(为简洁起见缩短了目录):

我觉得这很令人困惑,因为 $OV_DIR/lib/ogg.l.bc 确实存在,vorbis.l.bc 也存在,而且它们都可以被每个人读取(就像它们包含的目录一样)。

有谁知道我做错了什么?

谢谢,

马特

0 投票
1 回答
2208 浏览

linux - 如何防止从静态链接库中导出符号?

我在 linux x86 上创建了一个共享库。在创建它时,我在 openssl 中进行了静态链接。OpenSSL 仅在内部使用,但我看到 openssl 符号已被导出。这会导致需要我的库和 openssl 的其他库出现问题,因为可以在运行时加载错误的符号。当我将它静态链接到我的共享库时,有没有办法防止所有 openssl 符号被导出?

谢谢,迈克

0 投票
1 回答
1005 浏览

c - 用cygwin在windows中链接linux静态库

我有一个libfoo.a为 32 位 linux 机器编译的二进制静态库。我希望针对我用 cygwin 编译的 win32 项目编译它。

那可能吗?这似乎是可能的,因为存档中的所有目标文件都应该是标准ELF格式。

但是,我不断收到有关nmlibfoo.a. 当我创建一个libfoo.a包含一些与 in 中的名称相同的空函数的存根时libfoo.a,我不再收到有关这些函数的链接错误。

这甚至可能还是我错过了什么?无论如何,我该如何解决这个问题?

0 投票
1 回答
2285 浏览

iphone - Xcode 生成的静态库的大小

我在 Xcode 中有一个项目树,如下所示:AppProject 依赖于 ObjcWrapper,而 ObjcWrapper 又依赖于 PureCppLib。ObjcWrapper 和 PureCppLib 是静态库项目。加起来,所有源代码几乎没有达到 15k 行代码,而且正如预期的那样,生成的二进制文件的大小在发布模式下约为 750Kb,在调试模式下略高于 1Mb。到目前为止,一切都很好。

但是,无论在哪种模式下,ObjcWraper.a 和 PureCppLib.a 都超过 6Mb。所以第一个问题是为什么会这样。但更重要的是,如何确保那些静态库不包含部分或全部源代码?

提前致谢!

0 投票
3 回答
42245 浏览

c - 创建使用 getaddrinfo 的静态链接二进制文件?

我已经包含了 header netdb.h,其中getaddrinfo包含,但 gcc 发出此警告:

如何静态编译缺少的文件?

可能的解决方案:

  1. 可能是 glibc 安装缺少静态编译所需的相应目标文件。如果是这种情况,请创建相应的目标文件并在编译时链接它。

  2. 尝试使用 EGLIBC 而不是 glibc。

  3. 我成功地使用dietlibc 编译了我的程序,该程序编译时没有任何错误,而且生成的二进制文件比glibc 生成的要小得多。

0 投票
1 回答
2475 浏览

c++ - 编译静态时如何摆脱OCI.dll依赖

我的应用程序通过 Qt 的 QSqlDatabase 类访问 Oracle 数据库。

我正在将 Qt 编译为发布版本的静态版本,但我似乎无法摆脱 OCI.dll 依赖项。我正在尝试链接到 oci.lib(在 Oracle 的 Instant Client with SDK 中可用)。

这是我的配置行:

我使用以下方法链接 SDK 文件夹中的 oci.h 和 oci.lib:

然后,一旦 Qt 被编译,我在我的 *.pro 文件中使用以下行:

然后,在我的main.cpp中,添加以下命令以在应用程序中静态编译 OCI 插件:

编译项目后,我在我的工作站上对其进行了测试,它可以工作(因为我安装了 Oracle Instant Client)。当我在另一个工作站上尝试时,我总是收到以下消息:

此应用程序无法启动,因为 OCI.dll 未找到。重新安装此应用程序可能会解决此问题。

我不明白为什么我仍然需要 OCI.dll,因为我的静态链接应用程序应该链接到 oci.lib。

这里有没有 Qt 人可以为我提供解决方案?

非常感谢 !

STL