c++ - 写入时发生 fatal error LNK1168 : cannot open filename. mexw64

标签 c++ visual-studio matlab cuda mex

我正在使用 Visual Studio 2015 编写 C++/CUDA 代码,以生成 mex 文件以与 MATLAB 集成。

当我通过 MATLAB 控制台运行 mex 文件,然后尝试在 VS 上再次编译它时,出现此错误:

LINK : fatal error LNK1168: cannot open filename.mexw64 for writing

  • 关闭 MATLAB 并再次打开程序即可解决问题。

有谁知道任何不涉及关闭 MATLAB 的解决方案吗?

最佳答案

MEX 文件是 DLL(在 Windows 上,在其他系统上是共享对象)。首次运行时,MATLAB 会链接到它们,但不会取消链接,除非明确告知(或者当然退出 MATLAB)。

打字

clear mex
MATLAB 中的

将取消所有 MEX 文件的链接。请参阅the relevant documentation .

但请注意,您的 MEX 文件可以调用 mxLock ,这将导致它被锁定在内存中,然后它不会被 clear mex 清除。如果您在 MEX 文件中使用此函数,则需要包含一个工具来让您的 MEX 文件调用 mxUnlock。我通常添加一种语法,例如 mymexfile --unlock:MEX 文件检查是否使用一个参数调用它,并且该参数是一个字符串,并且该字符串与“--unlock”匹配,然后调用 mxUnlock

关于c++ - 写入时发生 fatal error LNK1168 : cannot open filename. mexw64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028275/

相关文章:

c++ - 使用私有(private)嵌套类型作为参数

c++ - 构造函数不抛出异常

visual-studio - 重命名 Visual Studio .NET 2008 C++ 项目

visual-studio-2010 - 我的 CSS 水平菜单显示 :block perfectly, 但在子目录中看起来完全不同

matlab - 值类在表中的表示

c++ - 如何在一个 DLL 中定义运行时常量并在另一个 DLL 中使用它们?

c# - 相同的依赖属性,多个类

matlab - 在模块化函数上使用 fimplicit 产生杂散线

string - 批量 strfind : finding lots of strings within lots of other strings

c++ - 是否需要定义 "=="运算符才能使用 std::find