【发布时间】:2016-05-26 20:28:41
【问题描述】:
尽管网上有很多资源可以解决这个问题,但我仍然在努力从一个简单的 .cpp 程序调用 MATLAB。
我的目标:
使用 Microsoft Visual Studio 2010 Professional 64 位构建 .cpp 程序 为内置函数和图形调用 MATLAB 引擎(MATLAB R2013b 64 位)
我做了什么:
在 .cpp 文件属性页中,我有: 1) 将平台更改为 Active(x64) 2) 将以下路径添加到 VC++ 目录 可执行目录:C:\Program Files\MATLAB\R2013b\bin 包含目录:C:\Program Files\MATLAB\R2013b\extern\include 参考目录:C:\Program Files\MATLAB\R2013b\bin\win64 库目录:C:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft
3) 编写了以下程序:
// mEng.cpp : Defines the entry point for the console application.
// libeng.dll is in C:\Program Files\MATLAB\R2013b\bin\win64
#include "stdafx.h"
#include <Engine.h>
#include <matrix.h>
#include <iostream>
#include <string>
#include <cmath>
#pragma comment (lib, "libmat.lib")
#pragma comment (lib, "libmx.lib")
#pragma comment (lib, "libmex.lib")
#pragma comment (lib, "libeng.lib")
#pragma comment (lib, "libut.lib")
using namespace std;
int main()
{
Engine *m_pEngine;
if (!(m_pEngine = engOpen("")))
{
fprintf(stderr, "\nCan't start MATLAB engine\n");
return EXIT_FAILURE;
}
//Now call the MATLAB script through MATLAB Engine
engEvalString(m_pEngine, "script");
cout << "Hit return to continue\n\n";
fgetc(stdin);
//Close the MATLAB Engine
engClose(m_pEngine);
return EXIT_SUCCESS;
}
收到的错误:
“程序无法启动,因为您的计算机中缺少 libeng.dll。尝试重新安装程序来解决这个问题。”
【问题讨论】:
-
您确认您的路径包含 C:\Program Files\MATLAB\R2013b\bin\win64 吗?
-
感谢您的回复。我已经编辑了我的帖子以包含我的路径目录的屏幕截图(请参阅“路径编辑”链接)。我的路径在参考目录中确实包含 C:\Program Files\MATLAB\R2013b\bin\win64,这是您的意思吗?
-
表示系统路径:系统将在运行时查找文件的位置。如果系统不知道去哪里寻找 libeng.dll,则说明已启动。打开命令提示符并键入
path以查看是否列出了 libeng.dll 的主页。更多信息:msdn.microsoft.com/en-CA/library/7d83bc18.aspx -
啊,成功了!我将 PATH=C:\Program Files\MATLAB\R2013b\bin\win64 添加到 Project Properties->Debugging 的 Environment 字段中
-
只有在您通过 IDE 进行调试时才会如此。一旦你自己运行你的应用程序,你就会重复。建议将dll路径添加到系统PATH。您可以通过快速网络搜索了解如何为您的 Windows 版本执行此操作。
标签: c++ matlab matlab-engine