MEX: no stdout in release

3 Ansichten (letzte 30 Tage)
Zohar
Zohar am 7 Jul. 2020
Beantwortet: Harsh am 26 Aug. 2024
I build my mex file with VS2019. I do my output with
cout << "hi" << endl;
When I build in release version, it outputs fine to matlab's console; in debug build it doesn't.
  2 Kommentare
Lukas
Lukas am 25 Jan. 2024
Same here. Is there any update on this?
Zohar
Zohar am 25 Jan. 2024

Melden Sie sich an, um zu kommentieren.

Antworten (1)

Harsh
Harsh am 26 Aug. 2024
Hi @Lukas and @Zohar,
It seems you're attempting to print strings from C++ to MATLAB.
Here are a few alternatives you might consider:
  • Use "mexPrintf " Instead of cout: You can replace "cout" with "mexPrintf " to print directly in MATLAB. Here's an example of how to use "mexPrintf":
#include "mex.h"
void mexFunction(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) {
mexPrintf("This prints in MATLAB again!!\n");
}
  • Error Encountered in Visual Studio: On attempting the same, I noticed an issue where, after running the MEX function along with the C++ file, and then trying to rebuild, an error appears in Visual Studio.
Initially, I executed the MEX file in MATLAB. Subsequently, when I attempted to build again in Visual Studio, I encountered the following error:
This error occurs irrespective of whether you are in release or debug mode. Even when executing the MEX file from the release folder, the error persists.
  • Solution: A simple way to resolve this issue is to restart MATLAB. After doing so, the build process is completed successfully.
(As shown here, the build completes successfully even in debug mode.)
I hope this information is helpful. Thank you!

Kategorien

Mehr zu Write C Functions Callable from MATLAB (MEX Files) finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by