diff --git a/rclcpp/include/rclcpp/type_support_decl.hpp b/rclcpp/include/rclcpp/type_support_decl.hpp index 7261db7b86..abcae98ca9 100644 --- a/rclcpp/include/rclcpp/type_support_decl.hpp +++ b/rclcpp/include/rclcpp/type_support_decl.hpp @@ -15,9 +15,67 @@ #ifndef RCLCPP__TYPE_SUPPORT_DECL_HPP_ #define RCLCPP__TYPE_SUPPORT_DECL_HPP_ +#include "rcl_interfaces/msg/intra_process_message.hpp" +#include "rcl_interfaces/msg/list_parameters_result.hpp" +#include "rcl_interfaces/msg/parameter_descriptor.hpp" +#include "rcl_interfaces/msg/parameter_event.hpp" +#include "rcl_interfaces/msg/set_parameters_result.hpp" +#include "rcl_interfaces/srv/describe_parameters.hpp" +#include "rcl_interfaces/srv/get_parameter_types.hpp" +#include "rcl_interfaces/srv/get_parameters.hpp" +#include "rcl_interfaces/srv/list_parameters.hpp" +#include "rcl_interfaces/srv/set_parameters.hpp" +#include "rcl_interfaces/srv/set_parameters_atomically.hpp" #include "rosidl_generator_cpp/message_type_support_decl.hpp" #include "rosidl_generator_cpp/service_type_support_decl.hpp" +// Prototypes of the explicit specializations are required on Windows before they are used. +// See: http://stackoverflow.com/questions/7774188/explicit-specialization-after-instantiation +namespace rosidl_generator_cpp +{ + +template<> +const rosidl_message_type_support_t * +get_message_type_support_handle(); + +template<> +const rosidl_message_type_support_t * +get_message_type_support_handle(); + +template<> +const rosidl_message_type_support_t * +get_message_type_support_handle(); + +template<> +const rosidl_message_type_support_t * +get_message_type_support_handle(); + +template<> +const rosidl_service_type_support_t * +get_service_type_support_handle(); + +template<> +const rosidl_service_type_support_t * +get_service_type_support_handle(); + +template<> +const rosidl_service_type_support_t * +get_service_type_support_handle(); + +template<> +const rosidl_service_type_support_t * +get_service_type_support_handle(); + +template<> +const rosidl_service_type_support_t * +get_service_type_support_handle(); + +template<> +const rosidl_service_type_support_t * +get_service_type_support_handle(); + +} // namespace rosidl_generator_cpp + namespace rclcpp { namespace type_support diff --git a/rclcpp/include/rclcpp/type_support_def.hpp b/rclcpp/include/rclcpp/type_support_def.hpp index 2e18de64d7..31b171dcde 100644 --- a/rclcpp/include/rclcpp/type_support_def.hpp +++ b/rclcpp/include/rclcpp/type_support_def.hpp @@ -17,17 +17,6 @@ #include "rclcpp/type_support_decl.hpp" -#include "rcl_interfaces/msg/intra_process_message.hpp" -#include "rcl_interfaces/msg/list_parameters_result.hpp" -#include "rcl_interfaces/msg/parameter_descriptor.hpp" -#include "rcl_interfaces/msg/parameter_event.hpp" -#include "rcl_interfaces/msg/set_parameters_result.hpp" -#include "rcl_interfaces/srv/describe_parameters.hpp" -#include "rcl_interfaces/srv/get_parameter_types.hpp" -#include "rcl_interfaces/srv/get_parameters.hpp" -#include "rcl_interfaces/srv/list_parameters.hpp" -#include "rcl_interfaces/srv/set_parameters.hpp" -#include "rcl_interfaces/srv/set_parameters_atomically.hpp" #include "rosidl_generator_cpp/message_type_support.hpp" #include "rosidl_generator_cpp/service_type_support.hpp"