Используйте (libccd) общую библиотеку для MATLAB

#matlab #cmake #shared-libraries #collision-detection

Вопрос:

Я хочу сделать обнаружение столкновений в MATLAB. В MATLAB можно включить общую библиотеку, написанную на C с

 loadlibrary();
 

Я нашел библиотеку обнаружения столкновений, написанную на C:

https://github.com/danfis/libccd

В документальном фильме говорится, что

 mkdir build amp;amp; cd build
cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON ..
make amp;amp; make install
 

создайте libccd как общую библиотеку. После выполнения этих команд в терминале я получаю файл libccd.dylib. Это то, что мне нужно для MATLAB…

 loadlibrary('libccd');
 

Но MATLAB хочет иметь файл заголовка (или более одного) в дополнение к общей библиотеке.

https://www.mathworks.com/help/matlab/ref/loadlibrary.html

Поэтому я добавил файл ccd.h в команду loadlibrary. Тогда проблема в том, что ccd.h включает в себя другой файл заголовка, но в папке под: ccd/vec3.h Похоже, что у MATLAB с этим проблема.

Поэтому мои вопросы таковы:

  1. Я не знаю, является ли файл ccd.h правильным файлом для первой ссылки. Какой из них мне следует использовать?
  2. Как решить проблему, из-за которой MATLAB не может найти файл по другому пути
  3. Я не знаю, что
 mkdir build amp;amp; cd build
cmake -G "Unix Makefiles" -DBUILD_SHARED_LIBS=ON ..
make amp;amp; make install
 

делает. Может быть, мне стоит создать собственную общую библиотеку? Но я не программист и никогда не работал с Cmake, Makefiles и так далее.

Спасибо за любую помощь

Ответ №1:

Я думаю, вам нужно использовать эту 'addheader' возможность, чтобы loadlibrary .

 loadlibrary('libccd', 'ccd.h', 'addheader', 'ccd/vec3')
 

Промойте и повторите для всех необходимых заголовков.