неверный MEX (указанная процедура не может быть найдена): создание функции CUDA MEX в visual studio и вызов ее в MATLAB - PullRequest
2 голосов
/ 02 марта 2012

У меня есть старый проект Visual Studio (проект cuSVM), который ранее использовался в 32-битном WinXP с использованием Visual Studio 2005 SP1.Я хочу запустить его в моей 64-битной Win7.Я скомпилировал его в 64-битном режиме, используя Visual Studio 2008. Но он не может работать из-за некоторых отсутствующих библиотек.

Я использовал «Ходок зависимости», отсутствующие библиотеки DLL были:

  • MSVCR80.DLL
  • MSVCR90D.DLL
  • IESHIMS.DLL

с желтыми вопросительными знаками, на которых написано: «Системе не удается найти указанный файл».

в дереве DLL у меня есть красный "NVCUDA.DLL" в "c: \ windows \ system32 \ NVCUDA.DLL" и красный блок "IEFRAME.DLL", "c: \ windows \ system32 \IEFRAME.DLL "в этом поддереве файла.

и сообщения об ошибках:

Error: At least one required implicit or forwarded dependency was not found.
Error: At least one module has an unresolved import due to a missing export function in an implicitly dependent module.
Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

Далее я скопировал файлы" MSVCR80.DLL "и" MSVCR90D.DLL "из установок Visual Studio:

C: \ Program Files (x86) \ Microsoft Visual Studio 9.0 \ VC \ redist \ Debug_NonRedist \ amd64 \ Microsoft.VC90.DebugCRT

и C: \ Program Files (x86) \Microsoft Visual Studio 8 \ VC \ redist \ amd64 \ Microsoft.VC80.CRT

Версия файла "MSVCR80.DLL" - "8.0.50727.42", а версия файла "MSVCR90D.DLL" - "9.0.21022.8 ".

Информация о файле embed.manifest: type =" win32 "name =" Microsoft.VC90.DebugCRT "version =" 9.0.21022.8 "processorArchitecture =" amd64 "publicKeyToken =" 1fc8b3b9a1e18e3b "

Я немного знаком с Visual Studio и DLL-файлами, поэтому мне очень нужна ваша помощь.

Ответы [ 2 ]

2 голосов
/ 24 июня 2012

У меня была такая же проблема. Решение проблемы было странным, трудно видимым вопросом.

Перейдите в Проект> Свойства. Выберите Configuration Properties> Linker> Advanced, как показано на рисунке ниже. Затем там, где написано «Target Machine», измените настройку с «Not set» на MachineX64 (/ Machine: X64), как показано на рисунке снова. Мне потребовалось некоторое время, чтобы понять это, и с тех пор я успешно собираю файлы mex + cuda из visual studio с нуля. Надеюсь, это решит проблему и для вас.

image

2 голосов
/ 04 марта 2012

Я обнаружил, что ошибка не может быть связана с отсутствием DLL. Ошибка MATLAB - «недопустимый mex-файл». Если сообщение об ошибке: «Указанный« модуль »не найден», то причиной являются отсутствующие dll. Но когда появляется сообщение об ошибке: «Указанная« процедура »не может быть найдена», проблема может быть другой

...