diff --git a/ortools/constraint_solver/CMakeLists.txt b/ortools/constraint_solver/CMakeLists.txt index 3cb19a91b9..a578370fa6 100644 --- a/ortools/constraint_solver/CMakeLists.txt +++ b/ortools/constraint_solver/CMakeLists.txt @@ -20,6 +20,10 @@ add_library(${NAME} OBJECT ${_SRCS}) set_target_properties(${NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON ) +if(MSVC AND BUILD_SHARED_LIBS) + target_compile_definitions(${NAME} PUBLIC "OR_BUILD_DLL") + target_compile_definitions(${NAME} PRIVATE "OR_EXPORT") +endif() target_include_directories(${NAME} PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) diff --git a/ortools/constraint_solver/constraint_solveri.h b/ortools/constraint_solver/constraint_solveri.h index 2b31b49ac9..39f6dae213 100644 --- a/ortools/constraint_solver/constraint_solveri.h +++ b/ortools/constraint_solver/constraint_solveri.h @@ -2291,7 +2291,7 @@ class LocalSearchFilterManager : public BaseObject { int64_t accepted_value_; }; -class IntVarLocalSearchFilter : public LocalSearchFilter { +class OR_DLL IntVarLocalSearchFilter : public LocalSearchFilter { public: explicit IntVarLocalSearchFilter(const std::vector& vars); ~IntVarLocalSearchFilter() override; diff --git a/ortools/constraint_solver/routing.h b/ortools/constraint_solver/routing.h index 10e00fcc36..6ee0ce6690 100644 --- a/ortools/constraint_solver/routing.h +++ b/ortools/constraint_solver/routing.h @@ -251,7 +251,7 @@ class PathsMetadata { std::vector path_of_node_; }; -class RoutingModel { +class OR_DLL RoutingModel { public: /// Types of precedence policy applied to pickup and delivery pairs. enum PickupAndDeliveryPolicy { @@ -2837,7 +2837,7 @@ class RoutingModel { }; /// Routing model visitor. -class RoutingModelVisitor : public BaseObject { +class OR_DLL RoutingModelVisitor : public BaseObject { public: /// Constraint types. static const char kLightElement[]; diff --git a/ortools/init/CMakeLists.txt b/ortools/init/CMakeLists.txt index ff9d22ea23..f5fbec03c0 100644 --- a/ortools/init/CMakeLists.txt +++ b/ortools/init/CMakeLists.txt @@ -21,6 +21,10 @@ set_target_properties(${NAME} PROPERTIES LINKER_LANGUAGE CXX POSITION_INDEPENDENT_CODE ON ) +if(MSVC AND BUILD_SHARED_LIBS) + target_compile_definitions(${NAME} PUBLIC "OR_BUILD_DLL") + target_compile_definitions(${NAME} PRIVATE "OR_EXPORT") +endif() target_include_directories(${NAME} PRIVATE ${PROJECT_SOURCE_DIR} ${PROJECT_BINARY_DIR}) diff --git a/ortools/linear_solver/CMakeLists.txt b/ortools/linear_solver/CMakeLists.txt index aadecdab2b..9902bd9239 100644 --- a/ortools/linear_solver/CMakeLists.txt +++ b/ortools/linear_solver/CMakeLists.txt @@ -29,6 +29,10 @@ add_library(${NAME} OBJECT ${_SRCS}) set_target_properties(${NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON ) +if(MSVC AND BUILD_SHARED_LIBS) + target_compile_definitions(${NAME} PUBLIC "OR_BUILD_DLL") + target_compile_definitions(${NAME} PRIVATE "OR_EXPORT") +endif() target_include_directories(${NAME} PUBLIC $ $) diff --git a/ortools/linear_solver/linear_solver.h b/ortools/linear_solver/linear_solver.h index 4dee0ee7c3..1ea5aeb54f 100644 --- a/ortools/linear_solver/linear_solver.h +++ b/ortools/linear_solver/linear_solver.h @@ -1469,7 +1469,7 @@ class MPConstraint { * instead. We need to figure out how to deal with the subtleties of * the default values. */ -class MPSolverParameters { +class OR_DLL MPSolverParameters { public: /// Enumeration of parameters that take continuous values. enum DoubleParam {