Неустранимая ошибка LNK1168: невозможно открыть файл filename.mexw64 для записи - PullRequest
2 голосов
/ 07 мая 2019

Я пишу код c ++ / CUDA для Visual Studio 2015 , чтобы сгенерировать файл mex для интеграции с MATLAB .

Когда я запускаю mex-файл через консоль MATLAB, а затем снова пытаюсь скомпилировать его на VS, я получаю эту ошибку:

LINK: фатальная ошибка LNK1168: не удается открыть filename.mexw64для записи

  • Закрытие MATLAB и повторное открытие программы решает проблему.

Кто-нибудь знает какое-либо решение, которое не предусматривает закрытие MATLAB?

1 Ответ

5 голосов
/ 07 мая 2019

MEX-файлы - это библиотеки DLL (в Windows - общие объекты в других системах). При первом запуске MATLAB ссылается на них, но не отменяет связь, если явно не указано (или, конечно, не выходит из MATLAB).

Typing

clear mex

в MATLAB отменит все MEX-файлы. См. соответствующую документацию .

Но учтите, что ваш MEX-файл может вызывать mxLock, что приведет к его блокировке в памяти, после чего он не будет очищен clear mex. Если вы используете эту функцию в своем MEX-файле, вам необходимо включить средство для вызова вашего MEX-файла mxUnlock. Я обычно добавляю синтаксис, такой как mymexfile --unlock: MEX-файл проверяет, вызывается ли он с одним аргументом, и является ли этот аргумент строкой, а строка соответствует «--unlock», затем он вызывает mxUnlock.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...