Могу ли я иметь две проблемы с CasADi в одной программе C ++? - PullRequest
1 голос
/ 09 января 2020

В настоящее время я запускаю проблему оптимизации IPOPT через интерфейс CasADi. Я генерирую скомпилированные файлы CasADi (libcasadi_solver. c & libcasadi_solver.so), связываю CasADi через CMakeLists и вызываю их функцию csolver через оболочку. cpp:

nlpsol("csolver", "ipopt", "libcasadi_solver.so", solve_opts);

Я хочу получить Вторая проблема решена через этот интерфейс CasADi в той же программе C ++. Я думал, что смогу сделать это sh, сгенерировав разные файлы libcasadi_solver, скажем libcasadi_solver_1 и libcasadi_solver_2.

Однако компилятору это не нравится, выдает ошибку:

/ usr / bin / ld: не удается найти -lcasadi_solver

Интересно, что lcasadi_solver отличается от libcasadi_solver ... Я думаю, что эти имена настроены в установке / настройке casadi. Может быть, мне нужны две установки для запуска двух разных проблем? Похоже, неправильная идея. Я не буду называть эти проблемы параллельными, поэтому я полагаю, что мне не нужно беспокоиться о поточно-ориентированном программировании.

Любая помощь, предложения по достоинству оценены!

1 Ответ

0 голосов
/ 09 января 2020

Обдумал решение:

В CMakeLists 'casadi_solver' был указан в target_link_libraries ().

Оказывается, cmake добавляет к этим элементам 'lib'. Я не понял, что этот элемент был прямой инструкцией для cmake по поиску 'libcasadi_solver.so.'

. Я полностью удалил этот элемент из target_link_libraries (); кажется ненужным.

Ура! и рад услышать другие идеи, если есть более правильный способ взломать это.

...