如何使用visual studio 2015创建一个.exe,我可以在桌面上运行
How to create a .exe with visual studio 2015 that I can run from my desktop
我用OpenGL、GLFW、C/C++编写了一个游戏。我使用第三方图书馆,如SOIL和irrKlang。我使用Microsoft Visual 2015。调试版本和发布版本都可以在visualstudio中正常运行。在properties->C++->Code Generation->Runtime Library I selected/MDd中。我确实尝试了其他设置,但发布版本无法与任何其他设置配合使用。我的所有.dll都保存在发布和调试文件夹中。然而,当我转到我的发布文件夹并将在那里找到的.exe复制粘贴到桌面上时,它就不再运行了。我一直收到一条消息,说irrKlang.dll不见了。有人能解释一下如何启动并运行我的游戏的独立.exe吗?
这里有两件事。首先,.exe是包含应用程序入口点的可执行文件。所以这确实是你需要的第一件。然而,您的应用程序可以依赖于不是静态链接到它的代码,而是动态链接到它中的代码——这种动态链接的代码只在运行时加载。这些代码的运行库称为DLL("动态链接库")。
如果你的应用程序依赖于一个DLL,它会在运行时查找该DLL。如果它找不到,你会看到关于丢失DLL的消息框。因此,您不仅需要复制.exe文件,还需要复制它所依赖的所有.dll(以及它们所依赖的)。请注意,您的应用程序链接到许多默认的系统DLL,例如kernel32,但这些DLL不需要复制到.exe旁边,因为它们总是存在于系统搜索路径中。
现在是第二部分。如果要在未安装Visual Studio的电脑上运行应用程序,则需要确保该电脑已安装VS2015工具链自动链接的C/C++运行时。这些不是您手动复制的DLL;相反,有一个可重新分发的安装程序,可以在PC上为所有应用程序全局安装它们。您可以使用自己的安装程序来发货。
为了实现这一点,您只需要在Release中链接/MD
(调试CRT仅用于调试,并且仅在安装Visual Studio时安装——它不应该在您的PC之外运行)。
此语句:
"在visual studio中,调试和发布版本都可以运行。在属性->C++->代码生成->运行库中,我选择了/MDd。我确实尝试了其他设置,但发布版本无法与任何其他设置配合使用。"
让我相信,也许您没有第三方库的发布版本。
/MDd使您的应用程序使用MS运行时的调试版本,这意味着您的项目中的某些内容是使用调试版本或作为调试版本构建的。
我使用"dependent.exe"应用程序来查看可执行文件和DLL的依赖关系。它过去是由微软直接提供的,但现在似乎通过第三方提供支持。旧的SDK会有它。
http://www.dependencywalker.com/
- 调试控制台 ChessEngine.exe "used"在另一个应用程序(国际象棋 GUI)中
- C++ |DLL / EXE - 如何从导出的类调用另一个类方法?
- 是否可以将 EXE 文件作为 lib 文件链接到另一个项目?
- 如何将一个 exe 项目链接到另一个 exe 项目中的类
- 将32位和64位应用程序(具有相同代码)编译为一个EXE
- 在另一个C 程序的窗口中打开.exe
- 如何在C++程序中打开一个新的cmd.exe并获取其句柄
- 运行EXE形成另一个EXE并传递参数
- 找出一个正方形逻辑中可能的网格数量,但代码不接受超过六个输入,它停止并说.exe停止工作
- 将数据从一个.exe传递到另一个
- 没有一个Inspect.exe,magnify.exe,nardator.exe运行
- 是否可以使用 C++ 在我的程序中嵌入另一个 exe
- 一个奇怪的"Project.exe has triggered a breakpoint."?
- 调用外部函数(从一个exe到另一个exe)
- 从另一个 exe 运行 Exe
- 将一个exe嵌入到另一个exe中,以便生成单个exe
- 如何使用visual studio 2015创建一个.exe,我可以在桌面上运行
- 这是ntoskrnl.exe中tolower实现中的一个大错误吗
- .exe vs .dll 作为一个程序的模块
- 在 Visual Studio 2012 中将 C 和 C++ 代码编译为一个.exe文件