пустой MEX файл - PullRequest
       2

пустой MEX файл

0 голосов
/ 12 января 2012

Я пытаюсь запустить mex-файл, который я создал и скомпилировал. Тем не менее, программа падает, когда я пытаюсь использовать этот mex-файл с сообщением:

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000001 in ?? ()

Чтобы попытаться решить проблему, я полностью очистил файл, оставив только:

#include "mex.h"
#include "lsm_fast_marching_method.h" 

/* Input Arguments */
#define PHI                    (prhs[0])
#define BACKGROUND                 (prhs[1])

/* Output Arguments */
#define SKELETON          (plhs[0])


void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
return;
}

Содержимое заголовочного файла:

#ifndef included_fast_marching_method_h
#define included_fast_marching_method_h

#ifdef __cplusplus
extern "C" {
#endif

int computeExtensionFields2d(
  double *distance_function,
  double **extension_fields,
  double *phi,
  double *mark,
  double **source_fields,
  int num_extension_fields,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx);

int computeExtensionFields2d_WithMaxVal(
  double *distance_function,
  double **extension_fields,
  double *phi,
  double *mark,
  double **source_fields,
  int num_extension_fields,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx,
  double max_value);
int computeDistanceFunction2d(
  double *distance_function,
  double *phi,
  double *mark,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx);
int solveEikonalEquation2d(
  double *phi,
  double *speed,
  double *mask,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx);
int computeExtensionFields3d(
  double *distance_function,
  double **extension_fields,
  double *phi,
  double *mask,
  double **source_fields,
  int num_extension_fields,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx);
int computeDistanceFunction3d(
  double *distance_function,
  double *phi,
  double *mask,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx);
int solveEikonalEquation3d(
  double *phi,
  double *speed,
  double *mask,
  int spatial_derivative_order,
  int *grid_dims,
  double *dx);

int doHomotopicThinning(
  double *thinned_img,
  double *phi,
  double *background,
  int *grid_dims);

bool isSimplePoint(int* grid_point_status, double* background, int* grid_idx, int neighbors[][3], 
                   int* grid_dims);

#ifdef __cplusplus
}
#endif

#endif

Но программа все равно вылетает с той же ошибкой !! Я попытался запустить его в отладчике за пределами Matlab (GDB), и он все еще вылетает с тем же сообщением ..

Я использую 64-битную систему Linux.

Есть идеи, как это происходит?

Заранее спасибо.

...