Embed python in melab file in matlab on os x

I am trying to embed Python in the MATLAB mex function in OS X. I have seen links that can be made (for example, here ), but I cannot find any specific OS X information. So far I can successfully build inline Python (therefore my link flags should be fine), and I can also create sample mex files without any problems and with the default settings:

jm-g26b101:mex robince$ cat pytestnomex.c
#include <Python/Python.h>

int main() {
  Py_Initialize();
  PyRun_SimpleString("print 'hello'"); 
  Py_Finalize();
  return 0;
}
jm-g26b101:mex robince$ gcc -arch i386 pytestnomex.c -I/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5 -L/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config -ldl -lpython2.5
jm-g26b101:mex robince$ ./a.out
hello

But when I try to create a mex file that Python implements, I run into a problem with undefined main. Here is my mex function:

#include <Python.h>
#include <mex.h>

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[])
{
    mexPrintf("hello1\n");
    Py_Initialize();
    PyRun_SimpleString("print 'hello from python'");
    Py_Finalize();
}

The following are the steps for compiling mex:

jm-g26b101:mex robince$ gcc -c  -I/Applications/MATLAB_R2009a.app/extern/include -I/Applications/MATLAB_R2009a.app/simulink/include -DMATLAB_MEX_FILE  -arch i386 -I/Library/Frameworks/Python.framework/Versions/2.5/include/python2.5  -DMX_COMPAT_32 -O2 -DNDEBUG  "pytest.c"
jm-g26b101:mex robince$ gcc -O  -arch i386 -L/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/config -ldl -lpython2.5 -o  "pytest.mexmaci"  pytest.o  -L/Applications/MATLAB_R2009a.app/bin/maci -lmx -lmex -lmat -lstdc++
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

( -arch i386, 32 - python.org 32 2.5) , . . - , ?

[EDIT: , OS X 10.6.1 MATLAB 7.8 (r2009a), Python 2.5.4 (python.org) - gcc-4.0 gcc-4.2 (apple) ]

+3
1

, - :

-undefined dynamic_lookup -bundle

, , . , - OS X . , , , , / .

+4

Source: https://habr.com/ru/post/1722314/


All Articles