如何构建程序,以便在EXE(CodeBlocks)的位置不需要DLL

时间:2014-07-23 03:13:46

标签: c++ dll exe codeblocks static-linking

经过一番努力,我成功构建了一小段示例代码并使其运行。我在Win 7 x64机器上的CodeBlocks 13.12中使用C ++。该程序使用wxWidgets和OpenGL库。

问题是,为了使EXE成功运行,我不得不将这些DLL文件复制到EXE的位置:

  • wxbase30ud_gcc481TDM.dll
  • wxmsw30u_core_gcc481TDM.dll
  • wxmsw30u_gcc48.dll
  • wxmsw30ud_core_gcc481TDM.dll
  • wxmsw30ud_gl_gcc481TDM.dll

我想知道如何构建程序(项目中要更改的设置),以便EXE文件能够自行运行(以及其他计算机上) - "缺少DLL"错误消息?如果答案在未来类似的问题中可以作为参考,那将是很好的。

2 个答案:

答案 0 :(得分:1)

在链接器中,您可以添加与此类似的行:

-static wxbase30ud_gcc481TDM

但是,这不是非常有效或良好的做法。更好的方法是继续使用你的.exe包含dll,并简单地为你的程序提供一个用户可以在任何地方移动的快捷方式。这允许您将所有程序文件安装并保存在一起,但仍然让用户只担心整个程序文件。

答案 1 :(得分:0)

你可以使用类似Enigma Box的东西,它将DLL打包到exe中,如果你调用LoadLibrary,它将按预期运行:

http://enigmaprotector.com/en/about.html

其他一些像ILMerge或XBundler一样存在我也听说过......但是还没有用过它们。我也听说过DLLPack。