我正在使用 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/