我无法使用 Visual Studio 为 C++ wxwidgets 项目生成可部署的二进制文件。构建完成后,生成的 exe 似乎没有安装在任何其他 Windows 机器上。Visual Studio 2019 用于创建包含 openCV 的 GUI 库。我正在尝试创建一个独立的可执行文件 .exe 以在任何其他 Windows 计算机上运行它,而无需在其中安装 Visual Studio 或 opencv。早些时候,在其他计算机上打开可执行文件时,它给出了 openCV 和 wxwidgets 缺少 dll 的错误。因此,我从 openCV 和 wxwidgets bin 文件夹的目录中复制了所需的 dll。现在,当我尝试执行 exe 文件时,它显示以下错误。请帮我解决这个问题。
2 回答
2
使用动态链接的 C/C++ 运行时 ( /MD[d]
) 构建的应用程序需要在目标机器上安装适当的 x86(32 位)或 x64(64 位)VC++ 可再发行组件。它们可以从最新支持的 Visual C++ 下载中安装,也可以与应用程序一起包含在本地部署中。
此外,请确保只发送非调试(配置 = 发布)版本。
MSVCP140D.dll VCRUNTIME140D.dll VCRUNTIME140_1D.dll ucrtbased.dll
那些缺失的 DLL 名称中的'D'
后缀代表“调试”。这些是调试C/C++ 运行时 DLL,由 Configuration = Debug 构建使用,并作为 Visual Studio 安装程序的一部分安装。根据确定要重新分发的 DLL ,它们将在开发期间使用,但不会以其他方式部署:
应用程序的调试版本和各种 Visual C++ 调试 DLL 不可再分发。
于 2020-11-10T14:44:17.017 回答
0
似乎您正在使用 wxWidgets 的 DLL 构建,并且您将 OpenCV 构建为 DLL。
如果您自己不创建 DLL 并且您的软件是一个自包含的二进制文件,那么最好使用静态链接 wxWidgets 和 OpenCV。
除了 @dxiv 之外,并非 MS CRT 中的所有内容都可以静态链接使用。这就是为什么强烈建议通过创建一个安装程序来安装 MS CRT,它应该处理所有这些依赖项。
HTH。
谢谢你。
于 2020-11-10T17:15:54.783 回答