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

c++ - 静态数组常量是否会影响共享库布局?

考虑以下两种 C++ 标头案例:

情况1:

案例二:

后一种情况下的 const 仅用于自我强加的编译时检查,还是会影响 Mac/Linux/Windows 上的共享库布局?

更新:根据答案,编译器可能会将 const 内容放在只读页面上。Windows 上的 Visual C++ 或 Mac 或 Linux 上的 GCC是否实际上将 const 数据放在只读页面上?也许我测试了错误的方式,但在英特尔的 Mac 上,const 版本的元素似乎是可写的。

0 投票
3 回答
5973 浏览

c++ - 未解决的外部符号错误从构建库切换到 exe 或 dll

我正在将应用程序构建为库,但为了确保可以获得所需的输出,我将其切换为生成 exe。一旦我这样做了,我就收到了几个关于未解析的外部符号的错误。

起初我以为我没有为我引用的 3rd 方库设置路径,所以我将文件夹添加到我的路径变量中,甚至将它添加到我的包含、引用和源文件中,只是为了确保我有所有的路径。

我仍然收到错误:

错误 LNK2019:未解析的外部符号“__declspec(dllimport) public: static void __cdecl xercesc_2_8::XMLPlatformUtils::Initialize(char const * const,char const * const,class xercesc_2_8::PanicHandler * const,class xercesc_2_8::MemoryManager * const, bool)" (__imp_?Initialize@XMLPlatformUtils@xercesc_2_8@@SAXQBD0QAVPanicHandler@2@QAVMemoryManager@2@_N@Z) 在函数 "void __cdecl xsd::cxx::xml::initialize(void)" (?initialize@xml @cxx@xsd@@YAXXZ)

我在这里问它的原因是因为在 Visual Studio 中,当我将它构建为库时,我没有收到这些错误,但作为 dll 和 exe,我会。

有人有什么想法吗?

0 投票
5 回答
1956 浏览

c++ - 静态和动态库链接

在 C++ 中,静态库 A 链接到动态库 B 和 C。如果在 B 中定义的 A 中使用了一个类 Foo,如果它不使用 Foo,C 会链接吗?

我认为答案是肯定的,但是我现在遇到了 xlc_r7 的问题,其中库 C 说 Foo 是一个未定义的符号,就 C 而言,它是一个未定义的符号。我的问题是库 C 没有使用引用它的类。这链接在 Win32 (VC6) 和 OpenVMS 中。

这是链接器差异还是 PBCAK?

新信息:

  1. B 取决于 C,但反之亦然。

  2. 我没有使用 /OPT:REF 在 Windows 上进行链接,它可以毫无问题地链接。

0 投票
1 回答
3763 浏览

linux - 在 linux 中链接特定的共享库版本

我的构建过程包括 Qt 的 qmake Makefile 生成器和与 linux 捆绑的典型 make 实用程序。
我的应用程序由几个共享库组成,主应用程序与它们相关联。
如何在我的库上应用典型的 linux 版本控制方案?(使用版本 2 -> 对指向 foo.so.2.yz 的 foo.so.2 的链接使用 ldconfig 生成的链接)。

答案不必特定于我的构建过程。

0 投票
2 回答
3075 浏览

c - 应该包含什么库才能使用 TransparentBlt?

应该包含什么库才能使用 TransparentBlt?

这是链接到 Gdi32.lib 的 VC98 (Visual Studio 6)。(其他 GDI 函数,如预期的 BitBlt 链接),编译器编译时没有错误或警告。

即使包含 Gdi32.lib,链接器仍会返回此错误:

我错过了什么?

0 投票
11 回答
16541 浏览

c++ - 链接器内存不足 LNK1102

我和我的同事尝试构建一个包含数千个类的项目,但我们遇到了 LNK1102 错误(链接器内存不足)。我在网上看到了一些技巧,比如增加虚拟内存。我们试过了,但这没有帮助。我们还看到一些在编译代码时启用了不同的警告级别。一个人建议为警告启用 4 级。那怎么可能呢?还有其他建议吗?

0 投票
5 回答
1276 浏览

c# - C# 默认范围解析

我继承了与 BCL 类“Windows.Forms.Button”冲突的 ac# 类“Button”(我无法更改)。通常,我很乐意去:

但是有大量或对此类的引用,这很痛苦,必须重新输入。

有没有办法让编译器(链接器?)默认使用自定义版本的 Button 而不是 BCL 版本?

0 投票
9 回答
32400 浏览

c++ - 内联函数中的静态变量

我有一个在头文件中声明和定义的函数。这本身就是一个问题。当该函数未内联时,使用该标题的每个翻译单元都会获得该函数的副本,并且当它们链接在一起时,就会出现重复。我通过使函数内联来“修复”该问题,但恐怕这是一个脆弱的解决方案,因为据我所知,即使您指定了“内联”关键字,编译器也不保证内联。如果这不是真的,请纠正我。

无论如何,真正的问题是,这个函数中的静态变量会发生什么?我最终得到多少份?

0 投票
4 回答
1798 浏览

visual-studio - C++中的静态库问题

我正在尝试使用我在 Visual C++ 2005(非托管 C++)中创建的静态库。我声明了一个函数“int myF(int a);” 到 .h 文件中,我在 .cpp 文件中实现它,我编译它 - 生成 .lib 文件。

我在 VC++ 2005(也是本机 C++)中创建了一个新项目(一个单独的解决方案),我添加了包含文件和 lib 文件的路径;当我调用函数 myF 时,链接器报告错误:“错误 LNK2019:未解析的外部符号 _myF 在函数 _main 中引用”。如果我在与库项目相同的解决方案中创建客户端项目,然后添加对库项目的引用,它可以工作,但我不会像这样实现所有内容,而是将外部库添加到我的项目中。 .

怎么了?

谢谢你。

0 投票
3 回答
1443 浏览

c - 在“C”代码中使用链接器命令文件变量的绝对值

我有一个链接器命令文件,它将堆栈的顶部地址分配给一个变量

我想在“c”程序中使用这个地址——我想将堆栈复制到另一个位置,然后更新堆栈指针以指向新位置,然后对原始 RAM 库进行破坏性内存测试。

我发现如果我做类似的事情

然后该函数似乎传递了存储在堆栈位置的值

而不是堆栈本身的地址。任何人都可以帮忙吗?