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

c++ - C++ 函数模板特化的可见性

假设我fileA.h声明了一个classA带有模板函数的类SomeFunc<T>()。该函数直接在头文件中实现(与模板函数一样)。现在,我在(即不在头文件中)添加了SomeFunc()(如 for SomeFunc<int>())的专门实现。fileA.C

如果我现在SomeFunc<int>()从其他代码(可能也来自另一个库)调用,它会调用通用版本还是专业化版本?

我现在有这个问题,类和函数存在于两个应用程序使用的库中。一个应用程序正确地使用了专业化,而另一个应用程序使用了通用形式(这会导致稍后出现运行时问题)。为什么有区别?这可能与链接器选项等有关吗?这是在 Linux 上,使用 g++ 4.1.2。

0 投票
5 回答
1760 浏览

delphi - Delphi 资源不足

我使用 Delphi 7 编译的每个项目(我使用运行时包编译)都会给出链接器错误:“资源过多”。即使是空白应用程序也会出现此错误。

换句话说:德尔福死在我身上。

0 投票
4 回答
806 浏览

.net - 链接 .Net 程序集

这都是假设的,所以请多多包涵。

假设我正在用 C# 编写一个名为 Foo 的工具。输出是 foo.exe。我发现了一些我喜欢使用的非常棒的库,叫做 Bar,我可以在我的项目中将其作为 bar.dll 引用。当我构建我的项目时,我的输出目录中有 foo.exe 和 bar.dll。目前很好。

我想做的是链接 foo.exe 和 bar.dll,所以它们是一个程序集 foo.exe。我希望能够在 VS2008 中做到这一点,但如果我不得不求助于像 al.exe 这样的命令行工具,我并不介意。

0 投票
2 回答
247 浏览

c++ - 如何最好地缓解触发非增量链接 (MSVS) 的场景

虽然增量链接解决了链接所花费的大部分时间,即使对于非常大的项目,我发现 MSVS 中的增量链接器非常随意。(我目前使用的是 2003 atm,很想听听 2005/8 是否解决了这些问题。)我的已知触发器列表包括:

  • 更改主 .exe 项目外部的任何内容将触发完整链接
  • 添加静态变量有 50% 的机会触发完整链接

这个清单当然不包括在内。我该怎么做才能避免完整链接?

到目前为止,我发现的唯一诊断工具是

  • /test 在链接器命令行选项中

这太可怕了。有哪些解决方案可用于诊断完全重新链接的触发器?

0 投票
8 回答
65942 浏览

makefile - crti.o 文件丢失

我正在使用 GNU 工具链构建一个项目,一切正常,直到我开始链接它,链接器抱怨它丢失/找不到crti.o. 这不是我的目标文件之一,它似乎与 libc 有关,但我不明白为什么它需要这个crti.o,它不会使用库文件,例如libc.a

我正在为 arm 平台进行交叉编译。我在工具链中有文件,但是如何让链接器包含它?

crti.o位于“库”搜索路径之一,但它应该.o在库路径上查找文件吗?

gcc和的搜索路径是否相同ld

0 投票
3 回答
7722 浏览

math - 为什么在 Math.h 中调用函数时出现链接错误?

尝试在 中调用函数时math.h,出现如下链接错误

但我#include <math.h>
正在使用 gcc 并编译如下:

为什么链接器找不到 的定义sqrt

0 投票
7 回答
1196 浏览

.net - 如何在不捆绑 .Net 框架的情况下发布 .Net 应用程序?

我有一个奇怪的要求,即在不捆绑 .Net 框架的情况下发布应用程序(以节省内存占用和带宽)。

这可能吗?客户可能会或可能不会在他们的系统上安装 .Net 运行时。

做 Ngen 会解决这个问题吗?我一直在寻找类似发布 C++ 应用程序的旧方法(使用链接器仅链接您需要的二进制文件)。

0 投票
5 回答
16343 浏览

c++ - 在 C++ 中链接“静态”方法的问题

我想调用在不同文件中定义的 CPP 类的一些“静态”方法,但我遇到了链接问题。我创建了一个重新创建我的问题的测试用例,它的代码如下。

(我对 C++ 完全陌生,我来自 Java 背景,对 C 有点熟悉。)

当我尝试编译时,出现以下错误:

但是,如果我删除 main.cpp 中的类声明并将其替换为 #include "CppClass.cpp",它就可以正常工作。基本上,我想将这些声明放在一个单独的 .h 文件中并使用它。我错过了什么吗?

谢谢您的帮助。

0 投票
2 回答
17189 浏览

gcc - 在 32 位模式下编译 gcc 原子操作时出现链接错误

我有以下程序:

我在多 CPU 64 位 Intel 机器上运行的 Linux 上使用 GCC 4.2.2 编译这个程序:

当我在 64 位模式下编译程序时,它可以正常编译和链接:

当我在 32 位模式下编译它时,我收到以下错误:

虽然我永远不会真正在 32 位处理器上运行,但我确实需要一个 32 位可执行文件,以便可以链接一些 32 位库。

我的两个问题是:

  1. 为什么在 32 位模式下编译时会出现链接错误?

  2. 有没有办法让程序编译和链接,同时仍然能够与 32 位库链接?

0 投票
3 回答
17070 浏览

linker - 致命错误 C1900:“P1”版本“20060201”和“P2”版本“20050411”不匹配

我用 VIsual Studio 2005 Express Edition 编译我的项目,并得到这个链接错误。谁能建议如何解决这个问题?