C++如何在.exe中编译dll

7 c++ dll compilation

我正在创建一个c ++程序,但我希望能够向用户提供一个.exe文件.但是,我正在使用具有一些dll的库(卷曲等).是否可以将这些dll编译到.exe文件中?

我使用Code :: Blocks和mingw.

lot*_*har 10

为了实现这一点,您将需要静态链接.这要求所有库(以及它们递归依赖的库)都需要作为静态库提供.请注意,可执行文件的大小会很大,因为它将包含这些静态库中的所有代码.这就是为什么首先发明共享库(DLL),以便能够在应用程序之间共享公共代码.然而,在Windows上并不总是这么好用.

我认为您可能真正需要的是一个安装程序,它可以安装您的可执行文件及其所有依赖库.

  • 大多数时候我更喜欢便携式设备,尤其是工具。安装程序弄乱了我的“开始”菜单、桌面和“添加删除程序”中的程序列表。这就是为什么每当人们为此类问题建议安装人员时我都会感到畏缩。YMMV。尽管如此,还是对第一段投了赞成票。 (2认同)

Mic*_*urr 6

DDJ 2002 年的一篇文章可能有您想要的内容:

基本上,它结合使用 MSVC 的“延迟加载”功能链接到 DLL,并将 DLL 打包为 EXE 中的嵌入式资源。当第一次调用其中一个导出时,DLL 将在运行时自动提取。

我没有使用过这种技术,所以我无法真正评论它的效果如何,但它确实看起来是一个巧妙的主意。