Calling C++ functions from MATLAB

1 回表示 (過去 30 日間)
Vladimir
Vladimir 2013 年 2 月 11 日
Dear MATLAB users,
I am successfully generating C++ executable from my MATLAB code, however when I try to call cout in order to display the value of a variable, I get "error C3861: 'cout': identifier not found" The line I am using is: coder.ceval('cout',iteration); where iteration is the variable.
I understand, that cout is a function provided with the iostream library. The only reason I can think of for this problem, is MATLAB not calling the iostream library. If this is the case, how to tell explicitly to MATLAB to include the library?
Thank you for time
Vladimir
  1 件のコメント
Kaustubha Govind
Kaustubha Govind 2013 年 2 月 11 日
How about if you change that to 'std::cout' instead? Also, you may want to create a header foo.hpp with the line:
#include <iostream>
And add foo.hpp to the "codegen" command.

サインインしてコメントする。

採用された回答

Ryan Livingston
Ryan Livingston 2013 年 2 月 11 日
Please note that
coder.ceval('std::cout',iteration)
will generate
cout(10)
in the C++ code, assuming the value of iteration is 10. However, "std::cout" is not a function and "std::ostream" is not a functor so this line will fail to compile.
Here is an example of how this could be accomplished:
function callCout()
% Call << on cout. Don't forget to null-terminate the string
coder.ceval('std::operator<<',cout(),['Hello world!' char(0)]);
% Call endl
coder.ceval('endl', cout());
function os = cout
% Returns an opaque representing std::cout and inlines the value where needed
coder.inline('always');
os = coder.opaque('std::ostream', 'std::cout', 'HeaderFile', '<iostream>');
then compile with:
c = coder.config('mex');
c.CustomHeaderCode = '#include <iostream>';
c.TargetLang = 'C++';
codegen callCout -config c
and call the generated MEX
callCout_mex()

その他の回答 (1 件)

Vladimir
Vladimir 2013 年 2 月 12 日
Thank you both for the responses. In the end, I found it easier to call the printf command with coder.ceval. I inserted the header stdio.h to my code and that completed the task.
Thanks again.
vladimir
  1 件のコメント
Ryan Livingston
Ryan Livingston 2013 年 2 月 12 日
Glad to hear that you found a solution.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeMATLAB Coder についてさらに検索

タグ

製品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by