是否可以创建不需要 Microsoft Visual C++ 运行时库的 win64 MEX 文件

Posted

技术标签:

【中文标题】是否可以创建不需要 Microsoft Visual C++ 运行时库的 win64 MEX 文件【英文标题】:Is it possible to create a win64 MEX file that does not require Microsoft Visual C++ Runtime libraries 【发布时间】:2012-07-14 06:17:30 【问题描述】:

我正在尝试查看您是否可以分发 MEX 文件而无需最终用户安装 C++ 运行时库。 当您使用 visual 2010 express 创建 MEX 时,Matlab 会发出以下警告:


警告:使用 Microsoft Visual C++ 生成的应用程序/组件 2010 要求 Microsoft Visual Studio 2010 运行时 库在用于部署的计算机上可用。 要重新分发您的应用程序/组件,请确保 部署机器有这些运行时库。


是否有不需要在终端机器上安装运行时库的编译器?

【问题讨论】:

【参考方案1】:

是的,有:MinGW(-w64) GCC。它只链接到操作系统库 msvcrt.dll(当您使用 -static 选项链接时),它不需要安装并且是 Windows 的一部分。

要让 Matlab 使用它,您需要跳过一些障碍。 Here is some information。忽略 Cygwin 的东西,并确保使用上面链接中针对 x64 Windows 的 MinGW-w64 工具链。注意我没有亲自测试过,但这是你最好的选择。 Mathworks 也不支持它,因此您只能靠自己。

顺便说一句,安装MSVC++2010 redistributable 有什么问题?对许可没有影响,运行 MEX 代码意味着安装了 Matlab。恕我直言,再安装一件小东西不会那么麻烦。

【讨论】:

谢谢,我去查一下。您必须使用不受支持的编译器才能做到这一点,这让我有点惊讶。视觉 C++ 编译器不可能有 -static 选项吗?这样做的原因是我的最终用户是最终用户。我不希望他们执行任何操作来使我的代码正常工作。他们中的大多数人不知道什么是 Visual C++,所以他们不会理解他们正在安装的是什么。 @JeromeLecoq 好吧,有一个静态选项,既然您提到了它,但我相信所有代码都需要使用该选项编译(请参阅msdn),我不确定 MEX 是否东西与开箱即用的东西兼容。另一种解决方案是使用与 Matlab 为自己安装的可再发行组件相同版本的 VS,但这可能不可行。 谢谢。我认为 Matlab 不会为自己安装任何版本的 VS。如果你想使用编译 mex 函数,你必须安装编译器。他们曾经用 Matlab 发布 LCC,但在 64 位平台上却没有这样做。他们提到他们将在 2013 年完全停止提供 LCC。 @JeromeLecoq:MATLAB 将在安装时安装 VC++ 可再发行组件(我认为是 2005 年和 2008 年,但不是 2010 年)。我可以在MATLAB的bin目录中看到两个vcredist_*.exe @JeromeLecoq:我对创建安装程序了解不多,但我认为您所要做的就是添加vcredist_*.exe 作为安装项目的先决条件。当最终用户运行setup.exe 安装程序时,它会在需要时自动安装 VC++ 运行时。这里有一些 related questions 可能会有所帮助..

以上是关于是否可以创建不需要 Microsoft Visual C++ 运行时库的 win64 MEX 文件的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Visual Studio 更改默认主题

asp.net core开发环境准备

使用 PHP 在 Microsoft Azure 上创建路径

使用没有控件的 Microsoft .NET 图表控件库生成图像

powershell通过注册表路径判断系统是否需要重启

Microsoft Access 网格/表格控件