如何构建C ++项目在exe文件中嵌入所有动态链接库?

时间:2011-10-09 06:45:06

标签: c++ windows visual-studio dll

大家,我开始开发一个C ++项目,在这个项目中我必须使用一些开源项目有几个dll文件。然后我有一个问题“如何构建C ++项目嵌入exe文件中的所有动态链接库?” 谢谢你的帮助!

注意:抱歉,我忘记了我在x86上使用visual studio编译器

1 个答案:

答案 0 :(得分:2)

您的问题没有一般性答案。这取决于您是否需要跨平台。

然而,既然你提到“x86上的visual studio编译器”,我打赌你的目标是Windows。在这种情况下,您有两种选择:

  1. 官方推荐方式:将您的dll作为资源嵌入可执行文件中;然后,当您的程序启动时,您将磁盘上的某些dll作为临时文件提取(注意文件权限),然后使用LoadLibrary + GetProcAddress

  2. hackish方式:你编写一个PE可执行加载程序,以避免Windows API只提供从磁盘上的文件LoadLibrary的方法这一事实。通过编写自己的PE加载器,您将能够直接从内存流加载DLL。然后,我只是提到它作为参考,但它绝不是应该做的事情

  3. 最后,您需要遵守您正在使用的开源项目所选择的许可证。我的回答提供了有关如何实现目标的技术指导;这并不意味着您正在使用的项目的许可证允许您这样做。