我使用OpenGL,GLFW,C / C ++编写了一款游戏。我使用第三方库,如SOIL和irrKlang。我使用Microsoft Visual 2015.调试和发布版本都可以从visual studio运行。在属性 - > C ++ - >代码生成 - >运行时库我选择了/ MDd。我确实尝试了其他设置,但发布版本不适用于任何其他设置。我的所有.dll都保存在发行版和调试文件夹中。 但是,当我转到我的发布文件夹并将那里找到的.exe复制并粘贴到我的桌面上时,它就不再运行了。我一直收到一条消息,说明缺少irrKlang.dll。有人可以解释如何让我的游戏的独立.exe启动并运行吗?
答案 0 :(得分:3)
这里有两件事。首先,.exe是包含应用程序入口点的可执行文件。所以这确实是你需要的第一件作品。但是,允许您的应用程序依赖于静态链接到它的代码,而是动态 - 这种动态链接代码仅在运行时加载。这些运行时代码库称为DLL(“动态链接库”)。
如果您的应用程序依赖于DLL,它将在{}运行时look for that DLL。如果找不到它,您将看到有关丢失的DLL的消息框。因此,您不仅需要复制.exe文件,还要复制它依赖的所有.dll(以及它们依赖的.d文件)。请注意,您的应用程序链接许多默认系统DLL,例如kernel32,但这些不需要在.exe旁边复制,因为它们总是出现在系统搜索路径中。
现在,第二部分。如果要在未安装Visual Studio的PC上运行应用程序,则需要确保计算机具有VS2015工具链自动链接的C / C ++运行时安装。这些不是您手动复制的DLL;相反,它们有一个redistributable installer,可以在PC上为所有应用程序全局安装它们。您可以使用自己的安装程序运送它。
为了使其正常工作,您希望在Release中仅与/MD
链接(调试CRT仅用于调试,并且仅在安装Visual Studio时安装 - 它并不意味着在PC外部运行)。
答案 1 :(得分:0)
本声明:
“调试和发布版本都可以从visual studio运行。在属性 - > C ++ - >代码生成 - >运行时库我选择/ MDd。我确实尝试了其他设置但发布版本不起作用与任何其他人一起。“
让我相信你可能没有第三方图书馆的发布版本。
/ MDd会导致您的应用程序使用MS运行时的调试版本,这意味着项目中的某些内容正在使用或作为调试版本构建。
我使用'depends.exe'应用程序来查看我的可执行文件和DLL的依赖项。它曾经由微软直接提供,但现在似乎得到了第三方的支持。较旧的SDK将拥有它。