0

所以我已经成功编译并运行了我的应用程序。它在我的开发计算机上完美运行。

但是,当我尝试在另一台计算机上运行它时,它无法运行,我收到“应用程序无法正确启动(0xc0150002)”错误。

几个问题:

  1. 我如何知道生成的 exe 是静态链接还是动态链接?
  2. 我怀疑它是动态链接的。我将依赖的dll放在哪里?
  3. 是否有可能将所有内容都放在一个 exe 中?

我知道我可能会在我自己和 Google 之间解决这个问题,但我真的没有时间进行这样的冒险。指出我正确的方向,我也许会投票给你的答案是最好的......

编辑:事实证明,其中一个 DLL(我自己编译的)被编译为调试,所以它缺少一些烦人的调试 DLL。我将它重新编译为 Release,一切正常。

4

3 回答 3

4

您应该获取并安装 MSVC Redistributable Package。它包含由 MSVS 编写和编译的应用程序所需的所有 DLL。

于 2012-08-20T09:35:29.973 回答
1

当您在 Visual Studio 中调试|运行您的应用程序时 - 您将在Output Window. 然后你可以使用一个工具Process Explorer来查看你的应用程序在部署机器上实际加载了哪些 dll。比较两者 - 您将拥有导致问题的 dll。

您可以将您的应用程序与同一目录中的此 dll 耦合,也可以通过将其链接到相应的 .lib 文件来静态链接到它。

于 2012-08-20T09:36:04.660 回答
0

这似乎与某种缺失的 DLL 有关。

您可以在项目选项下确定编译器设置为链接哪些库:C++ >> 代码生成 >> 运行时库

此设置通常设置为多线程 DLL 或多线程静态以供您执行

依赖的 DLL 可以与可执行文件位于同一目录中,并且 Windows 将可靠地找到它们,尽管根据 DLL 的性质(由其他应用程序等使用)还有其他选项。

如果这是您的问题,应该可以通过喜欢等效的静态库使其作为单个 exe 运行:如果您有库的源代码,这很容易,因为您可以使用正确的设置编译它们,如果您只是使用 VC 的可再发行组件,那么应该有编译器附带的静态库,您可以通过更改上面的项目设置链接到它们。如果您有其他第三方库,则需要在相同编译器版本上找到使用相同设置编译的静态版本以使其可靠。

于 2012-08-20T09:30:05.913 回答