【问题标题】:matlab to c code generation workflowmatlab 到 c 代码生成工作流程
【发布时间】:2013-03-29 13:20:50
【问题描述】:

我正在为我的学校项目测试 matlab 到 c/c++ 代码,但我不知道如何在 Visual Studio 中使用生成的 c/c++ 代码和静态库, 我的 matlab 函数很简单

function c = simpleProduct(a,b) %#codegen
c=a*b;

我使用 matlab 编码器为我的 win32 项目生成 c/c++ 代码(静态库),但问题是它生成了很多文件,而不是我正在寻找的文件 这是 simpleproduct.c, simpleproduct.h, simpleproduct.lib 但我得到了这个。

rt_nonfinite.h
rtGetInf.h
rtGetNaN.h
rtwtypes.h
simpleProduct_types.h
rt_nonfinite.cpp
rtGetInf.cpp     
rtGetNaN.cpp
rtwtypes.cpp
simpleProduct.obj 
rt_nonfinite.obj 
rtGetNaN.obj 
rtGetInf.obj 
simpleProduct_types.cpp
simpleProduct.lib  ------- my static library.
and others...

但问题是我曾经使用过 simpleProduct.h,并像这样调用 simpleproduct 函数

real32_T value=simpleproduct(10,10);

它给了我这个错误。甚至为链接器添加 .lib 文件。为什么会这样?

Error 1 error LNK2019: unresolved external symbol "float __cdecl simpleProduct(float,float)" (?simpleProduct@@YAMMM@Z) referenced in function main  c:\Users\serakpc\documents\visual studio 2012\Projects\matlabCoder\debugger\Source.obj  debugger

另外,如果有人帮助我为 Windows OS 通用 PC 配置 matlab 编码器,我将不胜感激。例如,你建议我在硬件面板下的“代码替换库”和“设计供应商”中使用什么

【问题讨论】:

  • 您的调用中的 (10,10) 可能被视为整数,编译器正在寻找一个接受整数的函数。尝试将其强制转换为显式浮动或使用 10.0。

标签: matlab visual-c++


【解决方案1】:

解决方案是,检查仅生成 matlab 代码并从头开始创建一个静态项目并使用 Visual c++ 编译生成的代码。我在一些论坛中找到了这个解决方案并且它有效。我认为 matlab 为 linux 编译库。

【讨论】:

  • 它仅适用于 Visual C++ 编译器吗?我有 MinGW64 编译器并得到同样的错误!
猜你喜欢
  • 2011-09-17
  • 2017-07-06
  • 2017-05-11
  • 1970-01-01
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-30
  • 1970-01-01
相关资源
最近更新 更多