c++ 如何在不需要在客户端机器上安装OpenAL的情况下将OpenAL32.dll与应用程序一起交付?

bkkx9g8r  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(74)

我有一个使用OpenAL库的32位C++ Windows应用程序。我使用官方OpenAL安装程序来安装所需的DLL文件,但当我发布我的应用程序时,我想找到一种方法来交付它,而不需要用户像我一样单独安装OpenAL。
对于其他DLL文件,我只是简单地将它们添加到我的项目中,但对于OpenAL,我似乎遇到了问题。这可能吗?如果可能,如何实现?

vjhs03f7

vjhs03f71#

安装Nuget软件包OpenAL.Soft,该软件包包含32位和64位的Windows DLL,导入库和头文件。您将不再需要Windows目录DLL。
您还可以将FodyCostura.Fody结合使用,以将所有nuget和引用的程序集嵌入到应用程序中。

wqsoz72f

wqsoz72f2#

显然,我混淆了Windows中的System32和SysWow 64文件夹。
应该反过来才对!

  • 64位Windows上的System32包含64.dll文件
  • 64位Windows上的SysWow 64包含32.dll文件

供参考:https://www.howtogeek.com/326509/whats-the-difference-between-the-system32-and-syswow64-folders-in-windows/

我做了什么:

所以我从官方安装源安装了OpenAL。这个安装程序将OpenAL32.dll文件复制到System32SysWow64文件夹中。
由于我的应用程序是32位的,我需要将OpenAL32.dll从SysWow 64文件夹复制到我的可执行文件目录中。一旦我删除OpenAL(从我的Windows System32SysWow64文件夹中删除这些.dll文件),它就可以与我的可执行文件一起使用.dll文件。

相关问题