diff --git a/CMakeLists.txt b/CMakeLists.txt index f176ffa..d770785 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,10 +102,7 @@ modernize_target_link_libraries( ${EIGEN3_INCLUDE_DIR}) target_include_directories( ${PROJECT_NAME} INTERFACE $) -install( - TARGETS ${PROJECT_NAME} - EXPORT ${TARGETS_EXPORT_NAME} - DESTINATION lib) +install(TARGETS ${PROJECT_NAME} EXPORT ${TARGETS_EXPORT_NAME}) if(BUILD_TESTING) add_subdirectory(tests) diff --git a/include/eiquadprog/eiquadprog-fast.hpp b/include/eiquadprog/eiquadprog-fast.hpp index df6d3a3..553321b 100644 --- a/include/eiquadprog/eiquadprog-fast.hpp +++ b/include/eiquadprog/eiquadprog-fast.hpp @@ -58,6 +58,7 @@ #define DEFAULT_MAX_ITER 1000 +#include "eiquadprog/config.hpp" #include "eiquadprog/eiquadprog-utils.hxx" namespace eiquadprog { @@ -75,7 +76,7 @@ enum EiquadprogFast_status { EIQUADPROG_FAST_REDUNDANT_EQUALITIES = 4 }; -class EiquadprogFast { +class EIQUADPROG_DLLAPI EiquadprogFast { typedef Eigen::MatrixXd MatrixXd; typedef Eigen::VectorXd VectorXd; typedef Eigen::VectorXi VectorXi; diff --git a/include/eiquadprog/eiquadprog.hpp b/include/eiquadprog/eiquadprog.hpp index 8753692..dae134e 100644 --- a/include/eiquadprog/eiquadprog.hpp +++ b/include/eiquadprog/eiquadprog.hpp @@ -77,6 +77,7 @@ #include #include +#include "eiquadprog/config.hpp" #include "eiquadprog/deprecated.hpp" #include "eiquadprog/eiquadprog-utils.hxx" @@ -107,17 +108,17 @@ void delete_constraint(Eigen::MatrixXd& R, Eigen::MatrixXd& J, Eigen::VectorXi& A, Eigen::VectorXd& u, size_t p, size_t& iq, size_t l); -double solve_quadprog(Eigen::LLT& chol, - double c1, Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, - const Eigen::VectorXd& ce0, const Eigen::MatrixXd& CI, - const Eigen::VectorXd& ci0, Eigen::VectorXd& x, - Eigen::VectorXi& A, size_t& q); +EIQUADPROG_DLLAPI double solve_quadprog( + Eigen::LLT& chol, double c1, + Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, const Eigen::VectorXd& ce0, + const Eigen::MatrixXd& CI, const Eigen::VectorXd& ci0, Eigen::VectorXd& x, + Eigen::VectorXi& A, size_t& q); -double solve_quadprog(Eigen::LLT& chol, - double c1, Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, - const Eigen::VectorXd& ce0, const Eigen::MatrixXd& CI, - const Eigen::VectorXd& ci0, Eigen::VectorXd& x, - Eigen::VectorXd& y, Eigen::VectorXi& A, size_t& q); +EIQUADPROG_DLLAPI double solve_quadprog( + Eigen::LLT& chol, double c1, + Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, const Eigen::VectorXd& ce0, + const Eigen::MatrixXd& CI, const Eigen::VectorXd& ci0, Eigen::VectorXd& x, + Eigen::VectorXd& y, Eigen::VectorXi& A, size_t& q); EIQUADPROG_DEPRECATED inline double solve_quadprog2(Eigen::LLT& chol, @@ -131,17 +132,17 @@ inline double solve_quadprog2(Eigen::LLT& chol, } /* solve_quadprog is used for on-demand QP solving */ -double solve_quadprog(Eigen::MatrixXd& G, Eigen::VectorXd& g0, - const Eigen::MatrixXd& CE, const Eigen::VectorXd& ce0, - const Eigen::MatrixXd& CI, const Eigen::VectorXd& ci0, - Eigen::VectorXd& x, Eigen::VectorXi& activeSet, - size_t& activeSetSize); - -double solve_quadprog(Eigen::MatrixXd& G, Eigen::VectorXd& g0, - const Eigen::MatrixXd& CE, const Eigen::VectorXd& ce0, - const Eigen::MatrixXd& CI, const Eigen::VectorXd& ci0, - Eigen::VectorXd& x, Eigen::VectorXd& y, - Eigen::VectorXi& activeSet, size_t& activeSetSize); +EIQUADPROG_DLLAPI double solve_quadprog( + Eigen::MatrixXd& G, Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, + const Eigen::VectorXd& ce0, const Eigen::MatrixXd& CI, + const Eigen::VectorXd& ci0, Eigen::VectorXd& x, Eigen::VectorXi& activeSet, + size_t& activeSetSize); + +EIQUADPROG_DLLAPI double solve_quadprog( + Eigen::MatrixXd& G, Eigen::VectorXd& g0, const Eigen::MatrixXd& CE, + const Eigen::VectorXd& ce0, const Eigen::MatrixXd& CI, + const Eigen::VectorXd& ci0, Eigen::VectorXd& x, Eigen::VectorXd& y, + Eigen::VectorXi& activeSet, size_t& activeSetSize); // } } // namespace solvers diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 9462063..0f79e62 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -31,6 +31,10 @@ foreach(test ${TESTS}) endforeach(test ${TESTS}) add_library(testab SHARED TestA.cpp TestB.cpp) +# testab is just a test shared library, so on Windows we export the symbols with +# WINDOWS_EXPORT_ALL_SYMBOLS +set_target_properties(testab PROPERTIES WINDOWS_EXPORT_ALL_SYMBOLS TRUE) + target_link_libraries(testab ${PROJECT_NAME}) target_link_libraries(test-integration testab) if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")