#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 с этим проблема.
Поэтому мои вопросы таковы:
- Я не знаю, является ли файл ccd.h правильным файлом для первой ссылки. Какой из них мне следует использовать?
- Как решить проблему, из-за которой MATLAB не может найти файл по другому пути
- Я не знаю, что
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')
Промойте и повторите для всех необходимых заголовков.