我用OpenGL,GLFW,C/C++写了一个游戏。我使用第三方库,比如SOIL和irrKlang。我使用Microsoft Visual 2015。调试版本和发布版本都可以在visual studio中正常运行。在properties -> C++ -> Code Generation-> Runtime Library中,我选择了/MDd。我确实尝试了其他设置,但发布版本无法与任何其他设置一起工作。我的所有.dll都保存在release和debug文件夹中。但是,当我转到我的release文件夹,将在那里找到的.exe复制并粘贴到我的桌面上时,它不再运行。我一直收到一条消息,说irrKlang.dll丢失了。有人能解释一下如何让我的游戏的独立.exe启动和运行吗?
发布于 2016-03-29 23:56:09
这里有两件事。首先,.exe是包含应用程序入口点的可执行文件。所以这确实是你需要的第一件东西。但是,您的应用程序可以依赖于不是静态链接到它的代码,而是动态链接的代码--这种动态链接的代码只在运行时加载。这些运行时代码库被称为DLL(“动态链接库”)。
如果您的应用程序依赖于DLL,它将在运行时执行look for that DLL。如果它找不到它,您将看到有关缺少DLL的消息框。因此,您不仅需要复制.exe文件,还需要复制它所依赖(以及它们所依赖的)的所有.dlls。请注意,您的应用程序链接指向许多默认的系统DLL,例如kernel32,但不需要将这些链接复制到.exe旁边,因为它们总是出现在系统搜索路径中。
现在,第二部分。如果您希望在未安装Visual Studio的PC上运行应用程序,则需要确保该计算机安装了VS2015工具链自动链接的C/C++运行时。这些不是您手动复制的redistributable installer;相反,它们有一个all,它为所有应用程序在PC上全局安装它们。您可以将其与您自己的安装程序一起发布。
要使其起作用,您只需在发行版中与/MD链接( debug CRT仅用于调试,并且仅在安装Visual Studio时安装--它不能在您的PC之外运行)。
发布于 2016-03-30 04:07:07
这句话:
“调试版本和发布版本在visual studio中都运行正常。在属性-> C++ ->代码生成->运行时库中,我选择了/MDd。我尝试了其他设置,但发布版本不适用于任何其他设置。”
这让我相信,也许你的第三方库没有发布版本。
/MDd使您的应用程序使用MS运行时的调试版本,这意味着您的项目中的某些内容正在使用或作为调试版本生成。
我使用'depends.exe‘应用程序来查看可执行文件和DLL的依赖关系。它过去是由微软直接提供的,但现在似乎通过第三方提供支持。旧版软件开发工具包将提供此功能。
http://www.dependencywalker.com/
https://stackoverflow.com/questions/36289044
复制相似问题