Проблемы, включая MATLAB "engine.h" для кода C ++ - PullRequest
10 голосов
/ 10 января 2012

Я пытаюсь запустить пример кода из документа MATLAB, но когда я пытаюсь построить проект в Visual Studio, я получаю эту ошибку

fatal error C1083: Cannot open include file: 'engine.h': No such file or directory

Дело в том, что в Документе я не могу найти, где найти заголовок, чтобы связать его, они показывают примеры, как будто не нужно было ничего делать, просто сделайте

#include "engine.h";

Есть идеи, как решить эту проблему?

EDIT

Я решил первую проблему, но теперь я получаю некоторые ошибки, связанные с отсутствующими библиотеками:

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 вступило в силу.

enter image description here Заранее спасибо.

Ответы [ 4 ]

12 голосов
/ 10 января 2012

Я наконец решил проблему.Я создавал проект WIN32, в то время как matlab - x64, поэтому VisualStudio выдает ошибки при попытке связать 64-битные платформы.Решение меняет платформу Active Solution на x64, внутри Свойства проекта -> Диспетчер конфигурации.

Это хорошо объяснено в следующей ссылке .

В любом случае, спасибо заответы, они были полезны.

Итак, суммируя, чтобы иметь возможность компилировать и запускать код c ++ в VisualStudio2008 и Matlab2010 с engine.h, необходимо выполнить следующие шаги:

1.-Задайте переменную Path в дополнительных системных настройках-> переменные среды: C: \ Program Files \ MATLAB \ R2010a \ bin \ win64 (или путь, где находится libeng.dll)

2.- В свойствах проекта VisualStudio, ссылка в Дополнительные каталоги Включить C ++ -> Общие: "C: \ Program Files \ MATLAB \ R2010a \ extern \ include"

3.- В проектеproperties, linker-> general, каталоги дополнительных библиотек: "C: \ Program Files \ MATLAB \ R2010a \ extern \ lib \ win64 \ microsoft"

4.- Добавьте следующие библиотеки вLinker-> Дополнительные зависимости: libeng.lib libmx.lib

5.- Измените платформу Active Solution на x64 в Configuration Manager, как описано в ссылке.

2 голосов
/ 10 января 2012

Вы добавили каталог включения MATLAB в путь включения вашего проекта?enter image description here.Каталог должен быть похож на «C: \ Program Files \ MATLAB \ R2010a \ extern \ include»

0 голосов
/ 09 августа 2017

Пока ответ Jav_Rock полностью правильный, я хочу добавить информацию об одном из пунктов:

1.- Установите переменную Path в Дополнительные параметры системы-> переменные среды: C: \ Program Files \ MATLAB \ R2010a \ bin \ win64 (или путь, где находится libeng.dll)

Я потратил три часа, чтобы понять, что это значит, поэтому я хочу прояснить этот момент для будущих исследователей. Вам необходимо добавить путь к библиотекам DLL MATLAB Engine к вашей Windows. Мы можем сделать это следующим образом:

Мой компьютер -> щелкните правой кнопкой мыши: Настройки. Открытое системное окно. Левый нижний угол: Расширенные настройки системы

enter image description here

Вкладка «Дополнительно»

enter image description here

В переменных окружения для вашего пользователя нажмите кнопку Создать ... и добавьте эту: Имя переменной: PATH Значение переменной: C: \ Program Files \ MATLAB \ R2016a \ bin \ win64

Этот путь является ссылкой на то, где находится ваша libeng.dll. Важный момент: может потребоваться перезагрузка VS или даже перезагрузка компьютера.

0 голосов
/ 30 сентября 2014

Если вы забыли, добавьте в свой каталог папку, содержащую libmat.dll libmx.dll и т. Д. Для меня это было:

C: \ Program Files \ MATLAB \ R2012a \ bin \ win64

...