问题标签 [linker]

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

c - 如何在 Delphi 项目中包含/链接 C .lib 文件

我们有一个 .lib 文件,它的功能必须包含在 Delphi 应用程序中。

包含 .obj 文件很容易,但由于某些未知原因,这不适用于 .lib 文件。帮助对此不是很有帮助。谷歌搜索并没有太大帮助(最有用的是使用其他链接器,但如果可能的话我想避免它)。

一种解决方案可能是使用 C++ builder 创建一个包,但我不太喜欢它。

所以问题是,是否有人知道将 C .lib 文件包含到 Delphi 项目中的方法(以便可以使用该功能)?或者有没有办法将 .lib 文件拆分为 .obj 文件。

(顺便说一下,我们使用 2006 年。

0 投票
4 回答
42160 浏览

c++ - 如何静态链接.DLL?

我们有一个由 VS 构建的(纯原生 C++).DLL。作为客户端,我们有一些本地 C++ 应用程序和一个围绕这个用 C++/CLI 编写的 DLL 的 .Net-Wrapper。最后,还有一些用 C# 编写的 .Net-Wrapper 客户端应用程序。

我的问题是 native.dll 必须以不同于 .Net 世界的方式分发,并且 VS 不会跟踪该 DLL。因此,为了让我的所有 C# 应用程序正常工作,我必须将其复制到每个可执行目录或将其放在 %PATH% 中的某个位置(我会避免在开发人员计算机上这样做,因为他们可能希望使用不同版本的 DLL 启动不同的应用程序)。如果有引用 Wrapper-DLL 的 UserControl 会出现更大的问题:您必须将 DLL 复制到 VS 的目录或再次复制到 %PATH%。但最坏的情况发生在我们的翻译工具上。该工具跟踪 .Net-Assemblies 并将它们打包到可以发送给外部翻译器的翻译器包中。据我所知,没有办法将本机 .DLL 放入该包中!

因此,我计划将本机 DLL 静态链接到 .Net-Wrapper 中,这将解决我的问题。但是对于我们的本机应用程序,这个本机 DLL 必须仍然是一个 DLL。

所以我有两个选择:

  • 制作两个项目(一个生成静态库;一个创建动态库=>我尽量避免这种情况)
  • 找到静态链接 DLL 的解决方案
  • 找到一种方法让 VS 从一个项目中生成两个输出
0 投票
3 回答
1047 浏览

c++ - C++ 标准和全局符号删除

任何人都可以链接到 C++ 标准关于编译器删除全局和静态符号的内容?我以为您不能保证如果未引用全局符号,编译器将删除它们。我的一位同事断言,如果您的全局符号包含在主翻译单元中,即使未引用这些符号,也不会删除它们。

0 投票
5 回答
1598 浏览

c - C代码库中的全局变量识别

我有一个 C 代码库,需要以编程方式识别所有使用的全局变量。我认为 gcc 可以用来生成内存映射文件,但不知道如何,这可能让我看到哪些变量是全局的?任何帮助,将不胜感激。

干杯

0 投票
2 回答
503 浏览

c++ - C++ 链接器错误

我有一个这样的函数,它不在一个类中:

它在 VS2005 中编译得很好,但是在第一个包含它的文件之后,我得到了每个文件的链接器错误,即使我使用的是 Compile Guards。凭直觉,我用这样的课程包围了它:

砰!固定的。

问题:为什么?

0 投票
5 回答
32180 浏览

linker - 链接共享库时限制符号的可见性

某些平台要求您向链接器提供共享库的外部符号列表。但是,在大多数 unixish 系统上,这不是必需的:默认情况下,所有非静态符号都可用。

我的理解是 GNU 工具链可以选择性地将可见性限制为明确声明的符号。使用 GNU ld 如何实现这一点?

0 投票
4 回答
9948 浏览

c++ - 减小 Windows 可执行文件大小

我在 Windows 上有一个 C++/MFC 应用程序 - 动态链接它只有 60kb 静态它 > 3Mb。
它是通过电子邮件分发给客户的,因此需要尽可能小。

它静态链接 MFC 和 MSCVRT 库——因为它是对一些问题的修复,我不希望更多关于缺少库的支持调用——尤其是非常有用的“应用程序配置不正确”!

无论如何,有没有去除所有额外的 MFC 东西的 Windows exe,这些东西是 dll 但我没有使用?
或者告诉它动态链接MSVCRT(必须存在)但静态链接可能不存在的MFC dll?

编辑 - 谢谢你把它降到了 1.6Mb,这是必须的!

0 投票
1 回答
645 浏览

c++ - Linux 链接器/加载器的环境覆盖

今天早些时候我问了一个关于environ的问题,其中一个更有趣的回复建议我可以使用 LD_DEBUG 收集信息。

现在我已经知道一些链接器/加载器环境变量(例如LD_PRELOAD)有一段时间了,但这对我来说是新的。谷歌搜索,我发现了一个 Linux 特定的手册页,讨论了链接器/加载器使用的环境变量,包括 LD_DEBUG。所以理论上,我已经准备好了。但在实践中,我确信我错过了与工具链中这个基本工具相关的一整套技巧。

简而言之,我还缺少什么?

0 投票
2 回答
1012 浏览

c++ - 与 Mac OS X 上的间接依赖关系的链接问题

我们有一些间接依赖的链接问题。从我在网上阅读的内容猜测,这可能是因为使用了两级命名空间。当我们链接到 boost 库时会发生这种情况,确切地说是 boost_filesystem,它本身依赖于 boost_system。链接器不解决 boost_filesystem 和 boost_system 之间的依赖关系。有人可以给我一些提示如何解决这个问题吗?手动将 boost_system 添加到依赖项中感觉很难看,此外,它在其他平台上也能正常工作。

0 投票
3 回答
462 浏览

c++ - 抑制 G++ 3.4.6 中的链接错误

不要问为什么,但是有什么方法可以抑制失败的链接错误?

如:

未定义对 BLANK 的引用

这是在 GCC 3.4.6 中