将dll转换为lib以进行静态链接?

Posted

技术标签:

【中文标题】将dll转换为lib以进行静态链接?【英文标题】:Convert a dll to a lib for static linking? 【发布时间】:2010-08-03 01:39:26 【问题描述】:

有没有静态链接 dll 的免费方法?我试过 dll 到 lib 但 999 美元太贵了。什么是替代品,因为我想要 1 个不错的 exe 而不是 1 个 exe + 1 个 DLL。

谢谢

【问题讨论】:

考虑到这有多难,这是一个相当不错的价格。 【参考方案1】:

我不确定它甚至可以完成。有些问题需要非常小心地处理。

DLL 中的资源? LIB 文件不包含这些文件,因此您还必须将它们导出,然后将它们重新集成到最终的 EXE 中 谁调用 DLLMain,何时调用?

Lou Franco 的想法可以解决所有这些问题,但重要的是要确保您不会将解压后的 DLL 留在用户的驱动器上。

【讨论】:

【参考方案2】:

您可以将 dll 放入资源中,然后将其写出并动态加载。您必须使用延迟加载,并确保在调用其中的任何内容之前将其写出来。

实际上并没有这种方式链接,但您只需部署一个 .exe。

【讨论】:

我正在使用 Visual Studio,是否有分步指南? 并非如此——考虑从资源中读取文件并链接到延迟加载的 dll。 这在实践中是行不通的,您将没有对适当保护的机器上的目录的写访问权。 我不推荐这个。我以前试过,大多数病毒扫描程序都不喜欢提取 DLL 甚至 EXE 的程序。【参考方案3】:

在许多情况下,您可以使用这个很酷的库将 dll 直接从资源加载到内存中:https://github.com/fancycode/MemoryModule。

这不是您正在寻找的东西,但它会实现相同的最终目标。

【讨论】:

【参考方案4】:

我在互联网上搜索并找到这个软件,我没有测试; http://www.coderupgrade.com/Dll2StaticLib.exehttp://www.binary-soft.com/dll2lib/d2l.exe

【讨论】:

以上是关于将dll转换为lib以进行静态链接?的主要内容,如果未能解决你的问题,请参考以下文章

编译 dll 项目时生成的 .lib 文件有啥用处,我可以将它用于静态链接吗? [复制]

dll和lib(包括静态链接库和与dll同时生成的lib)

将静态库转换为DLL会导致在main之前发生访问冲突

VS2013下静态链接库(lib)和动态链接库(dll)的生成与使用

将谷歌protobuf lib静态链接到dll库

Visual Studio 2017 动态链接库(DLL /LIB) 静态链接库(LIB)的思考