问题标签 [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.
c++ - C++ 函数模板特化的可见性
假设我fileA.h
声明了一个classA
带有模板函数的类SomeFunc<T>()
。该函数直接在头文件中实现(与模板函数一样)。现在,我在(即不在头文件中)添加了SomeFunc()
(如 for SomeFunc<int>()
)的专门实现。fileA.C
如果我现在SomeFunc<int>()
从其他代码(可能也来自另一个库)调用,它会调用通用版本还是专业化版本?
我现在有这个问题,类和函数存在于两个应用程序使用的库中。一个应用程序正确地使用了专业化,而另一个应用程序使用了通用形式(这会导致稍后出现运行时问题)。为什么有区别?这可能与链接器选项等有关吗?这是在 Linux 上,使用 g++ 4.1.2。
delphi - Delphi 资源不足
我使用 Delphi 7 编译的每个项目(我不使用运行时包编译)都会给出链接器错误:“资源过多”。即使是空白应用程序也会出现此错误。
换句话说:德尔福死在我身上。
.net - 链接 .Net 程序集
这都是假设的,所以请多多包涵。
假设我正在用 C# 编写一个名为 Foo 的工具。输出是 foo.exe。我发现了一些我喜欢使用的非常棒的库,叫做 Bar,我可以在我的项目中将其作为 bar.dll 引用。当我构建我的项目时,我的输出目录中有 foo.exe 和 bar.dll。目前很好。
我想做的是链接 foo.exe 和 bar.dll,所以它们是一个程序集 foo.exe。我希望能够在 VS2008 中做到这一点,但如果我不得不求助于像 al.exe 这样的命令行工具,我并不介意。
c++ - 如何最好地缓解触发非增量链接 (MSVS) 的场景
虽然增量链接解决了链接所花费的大部分时间,即使对于非常大的项目,我发现 MSVS 中的增量链接器非常随意。(我目前使用的是 2003 atm,很想听听 2005/8 是否解决了这些问题。)我的已知触发器列表包括:
- 更改主 .exe 项目外部的任何内容将触发完整链接
- 添加静态变量有 50% 的机会触发完整链接
这个清单当然不包括在内。我该怎么做才能避免完整链接?
到目前为止,我发现的唯一诊断工具是
- /test 在链接器命令行选项中
这太可怕了。有哪些解决方案可用于诊断完全重新链接的触发器?
makefile - crti.o 文件丢失
我正在使用 GNU 工具链构建一个项目,一切正常,直到我开始链接它,链接器抱怨它丢失/找不到crti.o
. 这不是我的目标文件之一,它似乎与 libc 有关,但我不明白为什么它需要这个crti.o
,它不会使用库文件,例如libc.a
?
我正在为 arm 平台进行交叉编译。我在工具链中有文件,但是如何让链接器包含它?
crti.o
位于“库”搜索路径之一,但它应该.o
在库路径上查找文件吗?
gcc
和的搜索路径是否相同ld
?
math - 为什么在 Math.h 中调用函数时出现链接错误?
尝试在 中调用函数时math.h
,出现如下链接错误
但我#include <math.h>
正在使用 gcc 并编译如下:
为什么链接器找不到 的定义sqrt
?
.net - 如何在不捆绑 .Net 框架的情况下发布 .Net 应用程序?
我有一个奇怪的要求,即在不捆绑 .Net 框架的情况下发布应用程序(以节省内存占用和带宽)。
这可能吗?客户可能会或可能不会在他们的系统上安装 .Net 运行时。
做 Ngen 会解决这个问题吗?我一直在寻找类似发布 C++ 应用程序的旧方法(使用链接器仅链接您需要的二进制文件)。
c++ - 在 C++ 中链接“静态”方法的问题
我想调用在不同文件中定义的 CPP 类的一些“静态”方法,但我遇到了链接问题。我创建了一个重新创建我的问题的测试用例,它的代码如下。
(我对 C++ 完全陌生,我来自 Java 背景,对 C 有点熟悉。)
当我尝试编译时,出现以下错误:
但是,如果我删除 main.cpp 中的类声明并将其替换为 #include "CppClass.cpp",它就可以正常工作。基本上,我想将这些声明放在一个单独的 .h 文件中并使用它。我错过了什么吗?
谢谢您的帮助。
gcc - 在 32 位模式下编译 gcc 原子操作时出现链接错误
我有以下程序:
我在多 CPU 64 位 Intel 机器上运行的 Linux 上使用 GCC 4.2.2 编译这个程序:
当我在 64 位模式下编译程序时,它可以正常编译和链接:
当我在 32 位模式下编译它时,我收到以下错误:
虽然我永远不会真正在 32 位处理器上运行,但我确实需要一个 32 位可执行文件,以便可以链接一些 32 位库。
我的两个问题是:
为什么在 32 位模式下编译时会出现链接错误?
有没有办法让程序编译和链接,同时仍然能够与 32 位库链接?
linker - 致命错误 C1900:“P1”版本“20060201”和“P2”版本“20050411”不匹配
我用 VIsual Studio 2005 Express Edition 编译我的项目,并得到这个链接错误。谁能建议如何解决这个问题?