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

c++ - 消除与 C++ 动态库的编译器间不兼容问题

...,对此的跟进。

从我对引用问题的回答中,我了解到:

  • 不同的编译器使用不同的名称修饰,这使得在使用编译器 B 构建的项目中无法使用使用编译器 A 构建的 C++ 动态库,
  • 该库可以构建为静态库,包括项目中的 n 个头文件和源文件或导出符号。(它仍然不会保存重建库以用于不同的编译器。)

根据上述内容仔细查看 SDL,我意识到它的链接有两层:在我的 SDL 项目中,我静态链接到 libSDL.a,而 libSDL.a 又将动态链接到 SDL。 dll,从而消除了不同编译器对不同 .dll 版本的需求。

问题是这是否真的是这种情况以及问题的可行解决方案,还是我错过了什么(以及什么)?

0 投票
4 回答
3709 浏览

c - 我需要静态库来静态链接吗?

在“C”上,Linux,

我需要静态库来静态链接,还是我拥有的共享库就足够了?如果不是,为什么不呢?(它们不包含相同的数据吗?)

0 投票
3 回答
23828 浏览

c - C 库不使用 gcc/g++ 进行链接

我有一个在 gcc 中使用的 c 库。该库具有扩展名 .lib 但始终作为静态库链接。如果我编写一个将库用作 c 代码的程序,那么一切都很好。但是,如果我将文件重命名为 .cpp (在 c/c++ 中执行简单的操作),我会得到未定义的引用。这些是我为测试目的编写的简单小程序,所以没有花哨的东西。我编译使用:

上面的工作就像一个魅力。然而:

或者

导致对 customlibrary.lib 中任何函数的未定义引用。我尝试创建一个名为 customlibrary.a 的符号链接,但没有成功。

为什么 g++ find 不能识别我的库。不幸的是,我无法访问库的源代码,但是将 c-lib 链接到 c++ 应该不是问题,对吧?

0 投票
2 回答
471 浏览

c++ - 函数级链接如何处理在文件级声明的变量?

据我了解,函数级链接构建(显式或不显式)所有可能调用的图表,并且仅将可访问函数的代码包含到生成的二进制文件中。但是它如何处理在文件级别声明的变量呢?

说我有

在一些只包含这两个变量和一组函数的文件中,这些函数实际上并未从任何剩余的代码中调用。

这些变量分配/初始化的代码是否会包含在输出中?

0 投票
1 回答
771 浏览

c - 静态和动态链接同一个库

我有一个静态链接到库 ( libA.2.0.a) 并动态链接到另一个库 ( libB.so) 的程序。libB.so还动态链接到旧版本的 libA ( libA.1.0.so)。

这种配置可行吗?如果是这样,系统如何知道使用来自libA.2.0.afor 我的程序的符号和来自libA.1.0.sofor的符号libB.so

0 投票
2 回答
3477 浏览

c++ - 不使用模板时如何摆脱警告LNK4006?

我知道这个问题不是很具有描述性,但我无法更好地表达它。

我正在尝试编译一个具有多个对象的静态链接库,所有对象都包含以下内容:

foo.h 是这样的:

现在,一切正常,但是如果我将 DataT 更改为只是带有双精度而不是 T 的 Data,我将在每个 .obj 的链接时收到 LNK4006 警告,说明 .ctor 已经定义。

编辑1:

编辑 2:我正在使用 MSVC7。.ctor 实际上包含在这两种情况下,如

不过,我想要完成的不是编译它,而是作为用户可以使用的标题。

0 投票
5 回答
26278 浏览

visual-studio - 有没有办法确定使用哪个版本的 Visual Studio 来编译静态库?

我有一组静态库 (.lib) 文件,其中一个可能是使用不同版本的 Visual Studio 构建的。这导致链接所有项目的代码生成失败。有什么方法可以确定使用哪个版本的 Visual Studio 来编译静态库?

0 投票
1 回答
4231 浏览

c++ - Visual Studio 2008 IDE - 静态链接 C Dll 库

我对这个 %&$^& VS IDE 感到沮丧^Frustraion。我正在使用 Visual C++ 2008 3.5 SP1(但如果需要,我也有专业版并且我不想使用 loadlibrary())

我有一个用另一种语言(实际上不是 C 语言)创建的测试 Dll,其中包含一个 CDECL 函数,该函数将“int”添加到“double”中。我真的很想使用 STDCALL 向浮点数添加一个 int,但如果能让前者首先工作,那将是一项重大成就。

我已广泛阅读并尝试过: http://support.microsoft.com/kb/313981 http://www.codeproject.com/KB/DLL/loadingdll.aspx 链接到静态库,静态库链接到静态库 和动态链接使用不同版本的 Visual Studio 生成的 DLL

我为 AddShow.dll 编写了一个不错的头文件,名为 AddShow.h

然后我使用这个漂亮的工具来创建 .lib 文件: http: //www.binary-soft.com/dll2lib/dll2lib.htm

怎么办?

我尝试右键单击并“添加”然后“类”然后“组件类”然后指定 dll 的路径和名称,但我得到 8 英里的膨胀和整个 Windows 工具箱和一个新的 AddShow.cpp 文件。

我的 C++ 代码非常简单:

如何让 IDE 链接 .lib 文件?

添加:

0 投票
1 回答
110 浏览

ruby - 如何将 Ruby 1.9 与托管 C++ 一起使用?

我正在尝试创建一个点网库来使用 ruby​​,为此,我正在链接 ruby​​ 的静态库,但我遇到了一些 LNK 错误。

我正在使用 Visual Studio 2008,在此先感谢。

0 投票
1 回答
1645 浏览

static-linking - DevIL 的静态库?

我真的需要一个用于 Windows 的 DevIL DLL 的静态版本,因为我需要将我的程序静态链接到它。有人有吗?

不幸的是,我没有从源代码编译的工具链:/

谢谢,