gpt4 book ai didi

c++ - 静态链接到库但仍需要 dll 才能运行的程序

转载 作者:IT老高 更新时间:2023-10-28 22:07:03 32 4
gpt4 key购买 nike

在链接方面有些事情我不明白...我正在使用第 3 方库(GEOS 库)编写程序。该程序依赖于 geos.lib,但仍需要 geos.dll 才能运行。

我读过 this question ,我想我理解静态库和动态库的区别。我不明白的是为什么我静态链接库时仍然需要一个dll。

最佳答案

Windows 上有 3 种库:

  • 对象库 (*.lib)
  • 导入库 (*.lib)
  • 动态库 (*.dll)

对象库是静态链接的。它们包含由库抽象的代码的完整对象定义。

导入库是对象库的一种特殊形式。它们不包含代码,而是包含最终将可执行文件映射到动态链接库的链接器的信息。

动态链接库(如对象库)为您的程序提供代码。但是,此代码是在运行时加载的,而不是编译到您的 exe 中。

您并不总是需要链接导入库。相反,您可以调用 LoadLibrary() 并按名称或序号查找 API 入口点。 (您总是必须告诉代码您要输入哪个 DLL 以及该 DLL 的 API 中的哪个位置。)

这里的其他评论是正确的,因为如果不重新编译库的代码,就无法将 DLL 制作成静态库——这是一种不同的输出。

关于c++ - 静态链接到库但仍需要 dll 才能运行的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051516/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com