Windows C++:编译 DLL 时是不是可以“烘焙”Windows DLL 依赖项? [复制]

Posted

技术标签:

【中文标题】Windows C++:编译 DLL 时是不是可以“烘焙”Windows DLL 依赖项? [复制]【英文标题】:Windows C++: Is it possible to "bake in" Windows DLL dependencies when compiling a DLL? [duplicate]Windows C++:编译 DLL 时是否可以“烘焙”Windows DLL 依赖项? [复制] 【发布时间】:2018-03-25 20:55:37 【问题描述】:

我有一个编译成 DLL 的 C++ Windows 程序。 DLL 使用各种导入的函数(示例如下):

在这种情况下,我的 DLL 使用来自 ADVAPI32.dllInitializeSecurityDescriptor,这是一个 Windows DLL。

我的问题是:是否可以将ADVAPI32.dll 的代码“烘焙”到 DLL 的编译中?例如。让它不显示为导入,而是复制其代码?或者这是不可行的,因为它又具有很多依赖项?

非常感谢您的帮助!

【问题讨论】:

您究竟为什么要这样做?由于 DLL 是 Windows 操作系统的一部分,因此它在您的程序执行时始终存在。 您可以将任何数据(也是 DLL)“搭载”作为资源嵌入,但这有点复杂。看看remcom,它可以将服务 exe 传输到远程主机。尽管如此 - 正如 Neil Butterworth 已经说过的,这对于 Windows DLL 来说不是必需的。对于其他 DLL,一个简单的安装程序脚本会更常见。 您要解决什么问题?您正在尝试做的事情有很多潜在的问题。 这比重复的问题有更多的问题。 ADVAPI32.DLL 是一个系统 DLL。即使您可以包含今天的版本,它也有望与今天的 Windows 内核一起使用。 【参考方案1】:

我认为答案,正如 cmets 所指出的,以及“将多个 DLL 合并为 1”的答案,这是不可行的、困难的和烦人的。我很乐意接受作为答案。 :)

【讨论】:

以上是关于Windows C++:编译 DLL 时是不是可以“烘焙”Windows DLL 依赖项? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 运行时组件中的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll

dll文件如何反汇编成源码,C++语言编写

C++ DLL中的导出类在编译时会发出警告[重复]

MS C++ 2010 和 mspdb100.dll

C++ Visual Studio Windows:如何在 dll 中声明但不定义外部函数

VS2008 "无法找到资源编译器dll 请确保路径正确"