Проблемы, включая MATLAB "engine.h" для кода С++
Я пытаюсь запустить пример кода из MATLAB Doc, но когда я пытаюсь построить проект в Visual Studio, я получаю эту ошибку
fatal error C1083: Cannot open include file: 'engine.h': No such file or directory
Дело в том, что в Doc я не могу найти, где найти заголовок, чтобы связать его, они показывают примеры, как будто не нужно ничего делать, просто выполните
#include "engine.h";
Любые идеи о том, как решить эту проблему?
ИЗМЕНИТЬ
Я решил первую проблему, но теперь я получаю некоторые ошибки, связанные с отсутствующими libs:
1>engwindemo.obj : error LNK2019: unresolved external symbol _engClose referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxGetClassName referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _engGetVariable referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _engOutputBuffer referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxDestroyArray referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _engEvalString referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _engPutVariable referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxGetPr referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _mxCreateDoubleMatrix_730 referenced in function _main
1>engwindemo.obj : error LNK2019: unresolved external symbol _engOpen referenced in function _main
Я устанавливаю переменную Path, как сказано в документации, устанавливает путь к lib и добавляет некоторые библиотеки, и теперь я не знаю, что еще я могу сделать. Я также перезагрузил VisualStudio, чтобы сделать изменение переменной Path эффективным.
Спасибо заранее.
Ответы
Ответ 1
Я окончательно решил проблему. Я создавал проект WIN32, а Matlab - x64, поэтому VisualStudio дает ошибки при попытке связать 64-битные платформы. Решение изменяет платформу Active Solution на x64, внутри Project Properties → Configuration Manager.
Это объясняется в следующей ссылке.
В любом случае, спасибо за ответы, они были полезны.
Итак, суммируя, чтобы компилировать и запускать код С++ в VisualStudio2008 и Matlab2010 с помощью engine.h, необходимы следующие шаги:
1.- Установить переменную пути в Advanced System Settings → переменные среды: C:\Program Files\MATLAB\R2010a\bin\win64 (или путь, где находится libeng.dll)
2.- В свойствах проекта VisualStudio, ссылку в дополнительных каталогах Include С++ → Общие:
"C:\Program Files\MATLAB\R2010a\extern\include"
3.- В свойствах проекта, linker- > general, Дополнительные библиотечные каталоги:
"C:\Program Files\MATLAB\R2010a\extern\lib\win64\microsoft"
4.- Добавьте следующие библиотеки в Linker- > Additional Dependencies:
libeng.lib
libmx.lib
5.- Измените платформу активных решений на x64 в Configuration Manager, как описано в ссылке.
Ответ 2
Добавили ли вы каталог MATLAB include в свой проект, включая путь?
. Каталог должен быть как "C:\Program Files\MATLAB\R2010a\extern\include"
Ответ 3
Если вы забыли, добавьте папку, содержащую libmat.dll libmx.dll и т.д. на ваш путь. Для меня это было:
C:\Program Files\MATLAB\R2012a\bin\win64
Ответ 4
В то время как ответ Jav_Rock полностью верен, я хочу добавить информацию об одной из точек:
1.- Установите переменную Path в Advanced System Settings → переменные среды: C:\Program Files\MATLAB\R2010a\bin\win64 (или путь, где libeng.dll)
Я потратил три часа, чтобы понять, что это значит, поэтому я хочу уточнить этот момент для будущих исследователей.
Вам нужно добавить путь к библиотекам DLL MATLAB Engine в Windows.
Мы можем сделать это следующим образом:
Мой компьютер → правый клик: Настройки. Открытое окно системы. Левый нижний угол: расширенные настройки системы
![введите описание изображения здесь]()
Расширенная вкладка
![введите описание изображения здесь]()
В переменных среды для вашего пользователя нажмите кнопку "Создать..." и добавьте этот параметр:
Имя переменной: PATH
Значение переменной: C:\Program Files\MATLAB\R2016a\bin\win64
Этот путь является ссылкой на то, где находится ваш libeng.dll.
Важный момент: может потребоваться перезагрузка ВС или даже перезагрузка компьютера.