致命错误 LNK1168:无法打开 filename.mexw64 进行写入

Fatal error LNK1168: cannot open filename.mexw64 for writing

我正在用 Visual Studio 2015 编写一个 c++/CUDA 代码来生成一个 mex 文件来与 MATLAB

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

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

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

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

正在打字

clear mex

在 MATLAB 中将取消链接所有 MEX-files。参见 the relevant documentation

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