我构建了一个使用一些外部库的应用程序,比如Tag-lib,Naudio和Windows Media Player。
因此,他们将我添加到我的解决方案(与我的EXE文件位于同一文件夹中),一些DLL。
我想将这些DLL嵌入到我的EXE文件中,所以我查看了互联网并找到了一些选项。
我找到的最佳答案是:
Embedding DLLs in a compiled executable
它有效,但不适用于所有DLL。
它成功嵌入了Naudio和Tag-Lib,但是无法嵌入Windows Media Player的DLL。
任何人都可以帮我将Windows Media Player的DLL嵌入到我的应用程序的EXE中吗?
更新
经过一些帮助(感谢Mathieu Wybrecht),它有效。 我做了他所说的一切,但仍然没有奏效。 EXE文件工作得很完美,我可以移动他,它会工作。 但是当我在项目的解决方案中时,它让我错过了关于丢失的Dlls(Costura.Fody刚刚嵌入的WMP的Dll ......),然后我再次将Dll复制到文件夹并且错误消失了。它需要构建解决方案,重建解决方案或启动程序,DLL再次消失(嵌入EXE)并且错误再次出现......
答案 0 :(得分:0)
你的问题不明确。你是什么意思"当我开始使用Windows Media Player时,它添加了一个DLL文件,现在它没有......"
如果问题是你想在你的exe中再嵌入一个DLL,请按照你找到的关于Costura.Fody的方法进行操作。
如果问题在运行时发生,请确保所有嵌入式DLL不会尝试加载更多依赖项。您可以使用" Dependency Walker"检查它们的依赖关系,它存在于x86和x64平台。
编辑:您编辑了自己的问题,现在我又回来编辑我的答案了:)
所以,你成功地嵌入了很少的DLL但不是每一个都嵌入了。它可能与以下一些原因有关: