C++ 我可以在一个C++;节目?

C++ 我可以在一个C++;节目?,c++,ipopt,C++,Ipopt,我目前通过CasADi接口运行一个IPOPT优化问题。我生成已编译的CasADi文件(libcasadi_solver.c和libcasadi_solver.so),通过CmakeList链接CasADi,并通过wrapper.cpp调用其csolver函数: nlpsol("csolver", "ipopt", "libcasadi_solver.so", solve_opts); 我希望通过同一个C++程序中的CasADi接口解决第二个问题。我想我可以通过生成不同的libcasadi_解算

我目前通过CasADi接口运行一个IPOPT优化问题。我生成已编译的CasADi文件(libcasadi_solver.c和libcasadi_solver.so),通过CmakeList链接CasADi,并通过wrapper.cpp调用其csolver函数:

nlpsol("csolver", "ipopt", "libcasadi_solver.so", solve_opts);
我希望通过同一个C++程序中的CasADi接口解决第二个问题。我想我可以通过生成不同的libcasadi_解算器文件来实现这一点,比如libcasadi_解算器1和libcasadi_解算器2

但是编译器不喜欢这样,抛出错误:

/usr/bin/ld:找不到-lcasadi_解算器

有趣的是,lcasadi_解算器与libcasadi_解算器不同。。。我认为这些名称是在casadi安装/配置中设置的。也许我需要两个安装来运行两个不同的问题?似乎是个错误的想法。我不会并行调用这些问题,所以我相信我不需要担心线程安全编程


任何帮助、建议都将不胜感激

想出了一个解决方案:

在CmakeList中,“casadi_解算器”列在target_link_库()中

事实证明,cmake为这些项预先添加了“lib”。我不明白这是cmake找到“libcasadi_solver.so”的直接指令

我从target_link_libraries()中完全删除了此项;这似乎没有必要


干杯!如果有更正确的方法解决这个问题,我很高兴听到其他想法。

想出了一个解决方案:

在CmakeList中,“casadi_解算器”列在target_link_库()中

事实证明,cmake为这些项预先添加了“lib”。我不明白这是cmake找到“libcasadi_solver.so”的直接指令

我从target_link_libraries()中完全删除了此项;这似乎没有必要

干杯!如果有更正确的方法解决这个问题,我很高兴听到其他想法