Compiler / MEX using C help

조회 수: 1 (최근 30일)
Leor Greenberger
Leor Greenberger 2013년 6월 17일
Hi all,
I compiled a matlab function using the compiler toolbox into a dll, and I am trying to call it from my C program. For some reason, the program hangs at the mlfSimpsum(...) line below. Anyone see a mistake I made? The matlab function is very simple:
function c = simpsum(a,b)
c = a + b;
end
My C code:
#include <stdio.h>
#include "main.h"
#include "SimpleSumDemo.h"
int main(void)
{
mxArray *a_ptr, *b_ptr;
mxArray *c_ptr=NULL;
double *c;
a_ptr = mxCreateDoubleScalar(2);
b_ptr = mxCreateDoubleScalar(7);
/* Call the MCR and library initialization functions */
if( !mclInitializeApplication(NULL,0) )
{
fprintf(stderr, "Could not initialize the application.\n");
exit(1);
}
if (!SimpleSumDemoInitialize())
{
fprintf(stderr,"Could not initialize the library.\n");
exit(1);
}
// Call the implementation function
mlfSimpsum(1,&c_ptr,a_ptr,b_ptr);
c = mxGetPr(c_ptr);
printf("2 + 7 = %d\n",&c);
// Call the library termination function
SimpleSumDemoTerminate();
// Clean up references (very important to prevent memory leaks!)
mxDestroyArray(a_ptr);
mxDestroyArray(b_ptr);
mxDestroyArray(c_ptr);
// Call the MCR termination function
mclTerminateApplication();
return 0;
}
  댓글 수: 2
Leor Greenberger
Leor Greenberger 2013년 6월 17일
I moved
a_ptr = mxCreateDoubleScalar(2);
b_ptr = mxCreateDoubleScalar(7);
to after the mclInitializeApplication and it now works. However, I get an output now of "2 + 7 = 1638144"
What am I doing wrong?
Leor Greenberger
Leor Greenberger 2013년 6월 17일
편집: Leor Greenberger 2013년 6월 17일
Fixed! Although, I wonder if its possible to return a type int and not double?

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Write C Functions Callable from MATLAB (MEX Files)에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by