gpt4 book ai didi

c++ - 如何从 C++ 调用 Matlab 函数

转载 作者:IT老高 更新时间:2023-10-28 22:28:29 27 4
gpt4 key购买 nike

我想在我的 C++ 项目中调用 MATLAB 函数。

我正在使用 Matlab R2010a 和 Visual Studio 2010

首先我创建了一个简单的matlab函数:

function y = foo(x)
y = x+1;

然后我使用matlab编译器使用matlab GUI编译器编译这个函数(文件->新建->部署项目,然后选择C++共享库)。它会生成这个文件 2 个文件夹:distrib 和 src。

发行版包含:

  1. foo.dll
  2. foo.h
  3. foo.lib

src 包含:

  1. foo.cpp
  2. foo.dll
  3. foo.exp
  4. foo.exports
  5. foo.h
  6. foo.lib
  7. foo_mcc_component_data.c

我想在 C++ 应用程序中使用这个文件。我尝试了很多次,但我没有找到方法。我在互联网上找到的所有方法都是使用旧的 matlab 编译器,它产生不同的文件或在旧版本的 Visual Studio 上工作。

那么请谁能帮帮我?

我必须做什么?我必须添加哪些文件/引用以及添加到哪里?我必须定义哪些路径?

最佳答案

也许为时已晚,但为了 future 。

包括 foo.h

C/C++-General-Additional Include Directories添加到matlab头文件(C:\Program Files (x86)\MATLAB\R2009b\extern\include )。

附加依赖项中的链接器添加 foo.libmclmcrrt.libmclcommain.lib

附加库目录中的 链接器 显示了您的 matlab 库(C:\Program Files (x86)\MATLAB\R2009b\extern\lib\win32\microsoft 用于 32 位版本(matlab 和 VS 版本应该相同。我必须安装第二个 Matlab 32 位版本。))。

我在我的系统路径中添加了 foo.lib 的方式。

在使用您的库 foo.dll 之前,您应该初始化 MCR 和库函数。

mclInitializeApplication(NULL,0);
fooInitialize();

使用后不要忘记:

mclTerminateApplication();
fooTerminate();

还有一些演示代码,如下所示:

int num = 1;
double numbrIn = 1.5;
std::cout<<"now we have " << numbrIn << std::endl;
mwArray array_in(num, 1, mxDOUBLE_CLASS, mxREAL);
array_in.SetData(&numbrIn,num);
mwArray array_out;
foo(1, array_out, array_in);
array_out.GetData(&numbrIn, num);
std::cout<<"now we have " << numbrIn << std::endl;

关于c++ - 如何从 C++ 调用 Matlab 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429243/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com