Компиляция файлов Mex в MATLAB MacMavericks

Я пытался следовать руководству по этой ссылке: http://thebrainiac1.blogspot.com.es/2012/07/v-behaviorurldefaultvmlo.html

Однако это очень хороший учебник, когда я дошел до шага 6 и запустил compilemex, компиляция не удалась. Я точно следовал руководству, однако может случиться так, что я использую другую архитектуру. Я использую MacOSx Mavericks версии 10.9.2.

Если у кого-то была такая же проблема на той же машине и ему удалось ее решить, поделитесь своей идеей, так как мне нужно, чтобы она работала. Очень признателен!

Вывод компилятора:

K>> compilemex
Compiling mexsvmlearn
Building with 'Xcode with Clang'
/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/mexsvmlearn.c:217:2: warning: '/*' within block comment [-Wcomment]
        /*  strcpy (docfile, argv[i]);

1 warning generated.

/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/svm_learn.c:2910:24: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
      if((unlabeled[i] == 2)) {

/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/svm_learn.c:2910:24: note: remove extraneous parentheses around the comparison to silence this warning
      if((unlabeled[i] == 2)) {

/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/svm_learn.c:2910:24: note: use '=' to turn this equality comparison into an assignment
      if((unlabeled[i] == 2)) {

/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/svm_learn.c:2916:29: warning: equality comparison with extraneous parentheses [-Wparentheses-equality]
      else if((unlabeled[i] == 3)) {

/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/svm_learn.c:2916:29: note: remove extraneous parentheses around the comparison to silence this warning
      else if((unlabeled[i] == 3)) {

/MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/svm_learn.c:2916:29: note: use '=' to turn this equality comparison into an assignment
      else if((unlabeled[i] == 3)) {

2 warnings generated.


MATLAB/HOGFeatureswithSVM/hog_feature_vector/face detection/svm_mex601/src/mexcommon.c:522:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.

compile failed

Когда я удалил try catch in thecompilemex.m, Matlab выдал ошибку такого типа: Ошибка при использовании mex

duplicate symbol _verbosity in:
    /var/folders/j_/1mchj6c53pgdb3bj4rf6324m0000gn/T//mex_3720017078488_810/global.o
    /var/folders/j_/1mchj6c53pgdb3bj4rf6324m0000gn/T//mex_3720017078488_810/svm_hideo.o
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)


Error in compilemex (line 7)
    mex -O  -DMATLAB_MEX -I../src ../src/mexsvmlearn.c ../src/global.c ../src/svm_learn.c
    ../src/svm_common.c ../src/svm_hideo.c ../src/mexcommon.c

person user2541516    schedule 15.10.2014    source источник
comment
Можете ли вы предоставить более подробную информацию о том, как ваша компиляция не удалась? Опубликовать вывод вашего компилятора?   -  person Jon    schedule 16.10.2014
comment
Я опубликовал свой вывод MATLAB. Обратите внимание, что на веб-странице автор говорит, что с предупреждениями все в порядке. Но все же компиляция в конце не удалась.   -  person user2541516    schedule 16.10.2014
comment
в опубликованном вами выводе есть только предупреждения, ошибки нет?   -  person Hoki    schedule 16.10.2014
comment
Прости, @Hoki, я забыл написать последнюю строчку. Спасибо, что сообщили мне.   -  person user2541516    schedule 16.10.2014
comment
Я не понимаю, как генерируются только предупреждения, а компиляция не удалась. Можете ли вы зайти в файл compilemex.m и посмотреть, поможет ли устранение строгой компиляции (компиляция без предупреждения) при компиляции этого кода?   -  person rayryeng    schedule 16.10.2014
comment
Привет, @rayryeng, единственное, что я мог сделать, это удалить блокировку попытки, чтобы знать, какую ошибку она выдает. Я добавил вопрос выше, чтобы вы могли видеть.   -  person user2541516    schedule 18.10.2014


Ответы (1)


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

Эта ошибка возникает из-за того, что переменная (в данном случае переменная int «verbosity») объявляется несколько раз, особенно в «global.c» и «svm_hideo.c» — удалите «int verbosity» из любого из этих файлы, и ваши источники mex будут скомпилированы без сучка и задоринки!

person Joelb92    schedule 06.05.2016