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

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

最佳答案

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

但是,由于您提到的是“x86上的Visual Studio编译器”,所以我敢打赌,您的目标是Windows。在这种情况下,您有两个选择:

  • 推荐的官方方式:将dll作为资源嵌入可执行文件中;然后在程序启动时,将这些dll作为临时文件提取到磁盘上的某个位置(请注意文件权限),然后使用LoadLibrary + GetProcAddress
  • :一种骇人听闻的方式:编写PE可执行加载器是为了规避Windows API仅提供一种从磁盘上的文件LoadLibrary的方式的事实。通过编写自己的PE加载程序,您将能够直接从内存流中加载dll。再说一遍,我只是提到它作为引用,但这绝不是应该做的事

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

    关于c++ - 如何建立C++项目将所有动态链接库嵌入exe文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7701866/

    10-13 08:29
    查看更多