From 23397ee7bff609149981c09ec34dbaa5cb1ee9d7 Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Thu, 2 Jan 2025 21:23:21 -0800 Subject: [PATCH 1/4] Use CMAKE_ARGS --- recipe/bld.bat | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/recipe/bld.bat b/recipe/bld.bat index f60da89..1034428 100644 --- a/recipe/bld.bat +++ b/recipe/bld.bat @@ -1,13 +1,11 @@ @echo on cmake %SRC_DIR% ^ + %CMAKE_ARGS% ^ -G Ninja ^ -B build ^ -DBUILD_TESTING=ON ^ -DCMAKE_BUILD_TYPE=Release^ - -DCMAKE_INSTALL_PREFIX=%LIBRARY_PREFIX% ^ - -DCMAKE_PREFIX_PATH=%LIBRARY_PREFIX% ^ - -DCMAKE_INSTALL_LIBDIR=lib ^ -DFCL_STATIC_LIBRARY=ON if errorlevel 1 exit 1 From 7c50c05cb9d1bfd13d0740acdc4a0ef7723f544e Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Thu, 2 Jan 2025 21:24:08 -0800 Subject: [PATCH 2/4] Increase build number --- recipe/meta.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/recipe/meta.yaml b/recipe/meta.yaml index a0fd28c..47a5c2e 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -13,7 +13,7 @@ source: - 553.patch build: - number: 6 + number: 7 run_exports: - {{ pin_subpackage(name, max_pin='x.x') }} From e70e27776cf507f8b2d96ced171c6f13457064db Mon Sep 17 00:00:00 2001 From: Jeongseok Lee Date: Thu, 2 Jan 2025 22:03:41 -0800 Subject: [PATCH 3/4] Build shared libraries for Windows --- recipe/bld.bat | 4 +- recipe/enable-shared-libs.patch | 9235 +++++++++++++++++++++++++++++++ recipe/meta.yaml | 3 +- 3 files changed, 9239 insertions(+), 3 deletions(-) create mode 100644 recipe/enable-shared-libs.patch diff --git a/recipe/bld.bat b/recipe/bld.bat index 1034428..b32be05 100644 --- a/recipe/bld.bat +++ b/recipe/bld.bat @@ -5,8 +5,8 @@ cmake %SRC_DIR% ^ -G Ninja ^ -B build ^ -DBUILD_TESTING=ON ^ - -DCMAKE_BUILD_TYPE=Release^ - -DFCL_STATIC_LIBRARY=ON + -DCMAKE_BUILD_TYPE=Release ^ + -DFCL_STATIC_LIBRARY=OFF if errorlevel 1 exit 1 diff --git a/recipe/enable-shared-libs.patch b/recipe/enable-shared-libs.patch new file mode 100644 index 0000000..d6229f2 --- /dev/null +++ b/recipe/enable-shared-libs.patch @@ -0,0 +1,9235 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6e5bbb8..ebca27a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -378,7 +378,7 @@ if(NOT FCL_BUILD_TESTS STREQUAL "DEFAULT") + unset(_BUILD_TESTING) + endif() + +-if(BUILD_TESTING AND NOT FCL_HIDE_ALL_SYMBOLS) ++if(BUILD_TESTING) + add_subdirectory(test) + endif() + +diff --git a/include/fcl/broadphase/broadphase_SSaP-inl.h b/include/fcl/broadphase/broadphase_SSaP-inl.h +index ad859ea..7943dd7 100644 +--- a/include/fcl/broadphase/broadphase_SSaP-inl.h ++++ b/include/fcl/broadphase/broadphase_SSaP-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SSaPCollisionManager; ++class SSaPCollisionManager; + + /** @brief Functor sorting objects according to the AABB lower x bound */ + template +@@ -85,7 +85,7 @@ struct SortByZLow + + /** @brief Dummy collision object with a point AABB */ + template +-class FCL_EXPORT DummyCollisionObject : public CollisionObject ++class DummyCollisionObject : public CollisionObject + { + public: + DummyCollisionObject(const AABB& aabb_) : CollisionObject(std::shared_ptr>()) +diff --git a/include/fcl/broadphase/broadphase_SSaP.h b/include/fcl/broadphase/broadphase_SSaP.h +index b0cc0a9..185b9a0 100644 +--- a/include/fcl/broadphase/broadphase_SSaP.h ++++ b/include/fcl/broadphase/broadphase_SSaP.h +@@ -46,7 +46,7 @@ namespace fcl + + /// @brief Simple SAP collision manager + template +-class FCL_EXPORT SSaPCollisionManager : public BroadPhaseCollisionManager ++class SSaPCollisionManager : public BroadPhaseCollisionManager + { + public: + SSaPCollisionManager(); +diff --git a/include/fcl/broadphase/broadphase_SaP-inl.h b/include/fcl/broadphase/broadphase_SaP-inl.h +index 7d201c7..e647472 100644 +--- a/include/fcl/broadphase/broadphase_SaP-inl.h ++++ b/include/fcl/broadphase/broadphase_SaP-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SaPCollisionManager; ++class SaPCollisionManager; + + //============================================================================== + template +diff --git a/include/fcl/broadphase/broadphase_SaP.h b/include/fcl/broadphase/broadphase_SaP.h +index 8a6b611..869e6a2 100644 +--- a/include/fcl/broadphase/broadphase_SaP.h ++++ b/include/fcl/broadphase/broadphase_SaP.h +@@ -48,7 +48,7 @@ namespace fcl + + /// @brief Rigorous SAP collision manager + template +-class FCL_EXPORT SaPCollisionManager : public BroadPhaseCollisionManager ++class SaPCollisionManager : public BroadPhaseCollisionManager + { + public: + +@@ -119,10 +119,10 @@ protected: + struct SaPPair; + + /// @brief Functor to help unregister one object +- class FCL_EXPORT isUnregistered; ++ class isUnregistered; + + /// @brief Functor to help remove collision pairs no longer valid (i.e., should be culled away) +- class FCL_EXPORT isNotValidPair; ++ class isNotValidPair; + + void update_(SaPAABB* updated_aabb); + +@@ -215,7 +215,7 @@ struct SaPCollisionManager::SaPPair + + /// @brief Functor to help unregister one object + template +-class FCL_EXPORT SaPCollisionManager::isUnregistered ++class SaPCollisionManager::isUnregistered + { + CollisionObject* obj; + +@@ -227,7 +227,7 @@ public: + + /// @brief Functor to help remove collision pairs no longer valid (i.e., should be culled away) + template +-class FCL_EXPORT SaPCollisionManager::isNotValidPair ++class SaPCollisionManager::isNotValidPair + { + CollisionObject* obj1; + CollisionObject* obj2; +diff --git a/include/fcl/broadphase/broadphase_bruteforce-inl.h b/include/fcl/broadphase/broadphase_bruteforce-inl.h +index 0c92ace..a0765a2 100644 +--- a/include/fcl/broadphase/broadphase_bruteforce-inl.h ++++ b/include/fcl/broadphase/broadphase_bruteforce-inl.h +@@ -46,7 +46,7 @@ namespace fcl { + + //============================================================================== + extern template +-class FCL_EXPORT NaiveCollisionManager; ++class NaiveCollisionManager; + + //============================================================================== + template +diff --git a/include/fcl/broadphase/broadphase_bruteforce.h b/include/fcl/broadphase/broadphase_bruteforce.h +index f8ce6c5..2f9179d 100644 +--- a/include/fcl/broadphase/broadphase_bruteforce.h ++++ b/include/fcl/broadphase/broadphase_bruteforce.h +@@ -46,7 +46,7 @@ namespace fcl + + /// @brief Brute force N-body collision manager + template +-class FCL_EXPORT NaiveCollisionManager : public BroadPhaseCollisionManager ++class NaiveCollisionManager : public BroadPhaseCollisionManager + { + public: + NaiveCollisionManager(); +diff --git a/include/fcl/broadphase/broadphase_collision_manager-inl.h b/include/fcl/broadphase/broadphase_collision_manager-inl.h +index e69f86c..1b5204b 100644 +--- a/include/fcl/broadphase/broadphase_collision_manager-inl.h ++++ b/include/fcl/broadphase/broadphase_collision_manager-inl.h +@@ -46,7 +46,7 @@ namespace fcl { + + //============================================================================== + extern template +-class FCL_EXPORT BroadPhaseCollisionManager; ++class BroadPhaseCollisionManager; + + //============================================================================== + template +diff --git a/include/fcl/broadphase/broadphase_collision_manager.h b/include/fcl/broadphase/broadphase_collision_manager.h +index c372c7a..c60c215 100644 +--- a/include/fcl/broadphase/broadphase_collision_manager.h ++++ b/include/fcl/broadphase/broadphase_collision_manager.h +@@ -63,7 +63,7 @@ using DistanceCallBack = bool (*)( + /// collision/distance between N objects. Also support self collision, self + /// distance and collision/distance with another M objects. + template +-class FCL_EXPORT BroadPhaseCollisionManager ++class BroadPhaseCollisionManager + { + public: + BroadPhaseCollisionManager(); +diff --git a/include/fcl/broadphase/broadphase_continuous_collision_manager-inl.h b/include/fcl/broadphase/broadphase_continuous_collision_manager-inl.h +index 05ff0f8..c5dee11 100644 +--- a/include/fcl/broadphase/broadphase_continuous_collision_manager-inl.h ++++ b/include/fcl/broadphase/broadphase_continuous_collision_manager-inl.h +@@ -46,7 +46,7 @@ namespace fcl { + + //============================================================================== + extern template +-class FCL_EXPORT BroadPhaseContinuousCollisionManager; ++class BroadPhaseContinuousCollisionManager; + + //============================================================================== + template +diff --git a/include/fcl/broadphase/broadphase_continuous_collision_manager.h b/include/fcl/broadphase/broadphase_continuous_collision_manager.h +index d0a0435..7cfa215 100644 +--- a/include/fcl/broadphase/broadphase_continuous_collision_manager.h ++++ b/include/fcl/broadphase/broadphase_continuous_collision_manager.h +@@ -63,7 +63,7 @@ using ContinuousDistanceCallBack = bool (*)( + /// accelerate the continuous collision/distance between N objects. Also support + /// self collision, self distance and collision/distance with another M objects. + template +-class FCL_EXPORT BroadPhaseContinuousCollisionManager ++class BroadPhaseContinuousCollisionManager + { + public: + BroadPhaseContinuousCollisionManager(); +diff --git a/include/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h b/include/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h +index 1a7341b..d48f854 100644 +--- a/include/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h ++++ b/include/fcl/broadphase/broadphase_dynamic_AABB_tree-inl.h +@@ -50,7 +50,7 @@ namespace fcl { + + //============================================================================== + extern template +-class FCL_EXPORT DynamicAABBTreeCollisionManager; ++class DynamicAABBTreeCollisionManager; + + namespace detail { + +@@ -59,7 +59,6 @@ namespace dynamic_AABB_tree { + #if FCL_HAVE_OCTOMAP + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse_( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + const OcTree* tree2, +@@ -171,7 +170,6 @@ bool collisionRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse_( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + const OcTree* tree2, +@@ -278,7 +276,6 @@ bool collisionRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse_( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + const OcTree* tree2, +@@ -369,7 +366,6 @@ bool distanceRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + const OcTree* tree2, +@@ -387,7 +383,6 @@ bool collisionRecurse( + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse_( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + const OcTree* tree2, +@@ -477,7 +472,6 @@ bool distanceRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, const OcTree* tree2, const typename OcTree::OcTreeNode* root2, const AABB& root2_bv, const Transform3& tf2, void* cdata, DistanceCallBack callback, S& min_dist) + { + if(tf2.linear().isIdentity()) +@@ -490,7 +484,6 @@ bool distanceRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNod + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root2, +@@ -524,7 +517,6 @@ bool collisionRecurse( + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root, CollisionObject* query, void* cdata, CollisionCallBack callback) + { + if(root->isLeaf()) +@@ -548,7 +540,6 @@ bool collisionRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNo + + //============================================================================== + template +-FCL_EXPORT + bool selfCollisionRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root, void* cdata, CollisionCallBack callback) + { + if(root->isLeaf()) return false; +@@ -567,7 +558,6 @@ bool selfCollisionRecurse(typename DynamicAABBTreeCollisionManager::DynamicAA + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse( + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root1, + typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root2, +@@ -656,7 +646,6 @@ bool distanceRecurse( + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root, CollisionObject* query, void* cdata, DistanceCallBack callback, S& min_dist) + { + if(root->isLeaf()) +@@ -702,7 +691,6 @@ bool distanceRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNod + + //============================================================================== + template +-FCL_EXPORT + bool selfDistanceRecurse(typename DynamicAABBTreeCollisionManager::DynamicAABBNode* root, void* cdata, DistanceCallBack callback, S& min_dist) + { + if(root->isLeaf()) return false; +@@ -725,7 +713,6 @@ bool selfDistanceRecurse(typename DynamicAABBTreeCollisionManager::DynamicAAB + + //============================================================================== + template +-FCL_EXPORT + DynamicAABBTreeCollisionManager::DynamicAABBTreeCollisionManager() + : tree_topdown_balance_threshold(dtree.bu_threshold), + tree_topdown_level(dtree.topdown_level) +@@ -744,7 +731,6 @@ DynamicAABBTreeCollisionManager::DynamicAABBTreeCollisionManager() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::registerObjects( + const std::vector*>& other_objs) + { +@@ -777,7 +763,6 @@ void DynamicAABBTreeCollisionManager::registerObjects( + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::registerObject(CollisionObject* obj) + { + DynamicAABBNode* node = dtree.insert(obj->getAABB(), obj); +@@ -786,7 +771,6 @@ void DynamicAABBTreeCollisionManager::registerObject(CollisionObject* obj) + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::unregisterObject(CollisionObject* obj) + { + DynamicAABBNode* node = table[obj]; +@@ -796,7 +780,6 @@ void DynamicAABBTreeCollisionManager::unregisterObject(CollisionObject* ob + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::setup() + { + if(!setup_) +@@ -822,7 +805,6 @@ void DynamicAABBTreeCollisionManager::setup() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::update() + { + for(auto it = table.cbegin(); it != table.cend(); ++it) +@@ -840,7 +822,6 @@ void DynamicAABBTreeCollisionManager::update() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::update_(CollisionObject* updated_obj) + { + const auto it = table.find(updated_obj); +@@ -855,7 +836,6 @@ void DynamicAABBTreeCollisionManager::update_(CollisionObject* updated_obj + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::update(CollisionObject* updated_obj) + { + update_(updated_obj); +@@ -864,7 +844,6 @@ void DynamicAABBTreeCollisionManager::update(CollisionObject* updated_obj) + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::update(const std::vector*>& updated_objs) + { + for(size_t i = 0, size = updated_objs.size(); i < size; ++i) +@@ -874,7 +853,6 @@ void DynamicAABBTreeCollisionManager::update(const std::vector +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::clear() + { + dtree.clear(); +@@ -883,7 +861,6 @@ void DynamicAABBTreeCollisionManager::clear() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::getObjects(std::vector*>& objs) const + { + objs.resize(this->size()); +@@ -892,7 +869,6 @@ void DynamicAABBTreeCollisionManager::getObjects(std::vector +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::collide(CollisionObject* obj, void* cdata, CollisionCallBack callback) const + { + if(size() == 0) return; +@@ -918,7 +894,6 @@ void DynamicAABBTreeCollisionManager::collide(CollisionObject* obj, void* + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::distance(CollisionObject* obj, void* cdata, DistanceCallBack callback) const + { + if(size() == 0) return; +@@ -945,7 +920,6 @@ void DynamicAABBTreeCollisionManager::distance(CollisionObject* obj, void* + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::collide(void* cdata, CollisionCallBack callback) const + { + if(size() == 0) return; +@@ -954,7 +928,6 @@ void DynamicAABBTreeCollisionManager::collide(void* cdata, CollisionCallBack< + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::distance(void* cdata, DistanceCallBack callback) const + { + if(size() == 0) return; +@@ -964,7 +937,6 @@ void DynamicAABBTreeCollisionManager::distance(void* cdata, DistanceCallBack< + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::collide(BroadPhaseCollisionManager* other_manager_, void* cdata, CollisionCallBack callback) const + { + DynamicAABBTreeCollisionManager* other_manager = static_cast(other_manager_); +@@ -974,7 +946,6 @@ void DynamicAABBTreeCollisionManager::collide(BroadPhaseCollisionManager* + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager::distance(BroadPhaseCollisionManager* other_manager_, void* cdata, DistanceCallBack callback) const + { + DynamicAABBTreeCollisionManager* other_manager = static_cast(other_manager_); +@@ -985,7 +956,6 @@ void DynamicAABBTreeCollisionManager::distance(BroadPhaseCollisionManager* + + //============================================================================== + template +-FCL_EXPORT + bool DynamicAABBTreeCollisionManager::empty() const + { + return dtree.empty(); +@@ -993,7 +963,6 @@ bool DynamicAABBTreeCollisionManager::empty() const + + //============================================================================== + template +-FCL_EXPORT + size_t DynamicAABBTreeCollisionManager::size() const + { + return dtree.size(); +@@ -1001,7 +970,6 @@ size_t DynamicAABBTreeCollisionManager::size() const + + //============================================================================== + template +-FCL_EXPORT + const detail::HierarchyTree>& + DynamicAABBTreeCollisionManager::getTree() const + { +diff --git a/include/fcl/broadphase/broadphase_dynamic_AABB_tree.h b/include/fcl/broadphase/broadphase_dynamic_AABB_tree.h +index 7ee6a33..bfe0ef6 100644 +--- a/include/fcl/broadphase/broadphase_dynamic_AABB_tree.h ++++ b/include/fcl/broadphase/broadphase_dynamic_AABB_tree.h +@@ -51,7 +51,7 @@ namespace fcl + { + + template +-class FCL_EXPORT DynamicAABBTreeCollisionManager : public BroadPhaseCollisionManager ++class DynamicAABBTreeCollisionManager : public BroadPhaseCollisionManager + { + public: + +diff --git a/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h b/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h +index 3cec23c..e844a02 100644 +--- a/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h ++++ b/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array-inl.h +@@ -49,7 +49,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT DynamicAABBTreeCollisionManager_Array; ++class DynamicAABBTreeCollisionManager_Array; + + namespace detail + { +@@ -61,7 +61,6 @@ namespace dynamic_AABB_tree_array + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse_( + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, + size_t root1_id, +@@ -175,7 +174,6 @@ bool collisionRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse_( + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, + size_t root1_id, +@@ -284,7 +282,6 @@ bool collisionRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse_(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, size_t root1_id, const OcTree* tree2, const typename OcTree::OcTreeNode* root2, const AABB& root2_bv, const Transform3& tf2, void* cdata, DistanceCallBack callback, S& min_dist) + { + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* root1 = nodes1 + root1_id; +@@ -368,7 +365,6 @@ bool distanceRecurse_(typename DynamicAABBTreeCollisionManager_Array::Dynamic + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse_( + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, + size_t root1_id, +@@ -464,7 +460,6 @@ bool distanceRecurse_( + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, size_t root1_id, + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes2, size_t root2_id, + void* cdata, CollisionCallBack callback) +@@ -498,7 +493,6 @@ bool collisionRecurse(typename DynamicAABBTreeCollisionManager_Array::Dynamic + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes, size_t root_id, CollisionObject* query, void* cdata, CollisionCallBack callback) + { + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* root = nodes + root_id; +@@ -523,7 +517,6 @@ bool collisionRecurse(typename DynamicAABBTreeCollisionManager_Array::Dynamic + + //============================================================================== + template +-FCL_EXPORT + bool selfCollisionRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes, size_t root_id, void* cdata, CollisionCallBack callback) + { + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* root = nodes + root_id; +@@ -543,7 +536,6 @@ bool selfCollisionRecurse(typename DynamicAABBTreeCollisionManager_Array::Dyn + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, size_t root1_id, + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes2, size_t root2_id, + void* cdata, DistanceCallBack callback, S& min_dist) +@@ -631,7 +623,6 @@ bool distanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicA + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes, size_t root_id, CollisionObject* query, void* cdata, DistanceCallBack callback, S& min_dist) + { + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* root = nodes + root_id; +@@ -678,7 +669,6 @@ bool distanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicA + + //============================================================================== + template +-FCL_EXPORT + bool selfDistanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes, size_t root_id, void* cdata, DistanceCallBack callback, S& min_dist) + { + typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* root = nodes + root_id; +@@ -701,7 +691,6 @@ bool selfDistanceRecurse(typename DynamicAABBTreeCollisionManager_Array::Dyna + + //============================================================================== + template +-FCL_EXPORT + bool collisionRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, size_t root1_id, const OcTree* tree2, const typename OcTree::OcTreeNode* root2, const AABB& root2_bv, const Transform3& tf2, void* cdata, CollisionCallBack callback) + { + if(tf2.linear().isIdentity()) +@@ -712,7 +701,6 @@ bool collisionRecurse(typename DynamicAABBTreeCollisionManager_Array::Dynamic + + //============================================================================== + template +-FCL_EXPORT + bool distanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicAABBNode* nodes1, size_t root1_id, const OcTree* tree2, const typename OcTree::OcTreeNode* root2, const AABB& root2_bv, const Transform3& tf2, void* cdata, DistanceCallBack callback, S& min_dist) + { + if(tf2.linear().isIdentity()) +@@ -729,7 +717,6 @@ bool distanceRecurse(typename DynamicAABBTreeCollisionManager_Array::DynamicA + + //============================================================================== + template +-FCL_EXPORT + DynamicAABBTreeCollisionManager_Array::DynamicAABBTreeCollisionManager_Array() + : tree_topdown_balance_threshold(dtree.bu_threshold), + tree_topdown_level(dtree.topdown_level) +@@ -748,7 +735,6 @@ DynamicAABBTreeCollisionManager_Array::DynamicAABBTreeCollisionManager_Array( + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::registerObjects( + const std::vector*>& other_objs) + { +@@ -781,7 +767,6 @@ void DynamicAABBTreeCollisionManager_Array::registerObjects( + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::registerObject(CollisionObject* obj) + { + size_t node = dtree.insert(obj->getAABB(), obj); +@@ -790,7 +775,6 @@ void DynamicAABBTreeCollisionManager_Array::registerObject(CollisionObject + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::unregisterObject(CollisionObject* obj) + { + size_t node = table[obj]; +@@ -800,7 +784,6 @@ void DynamicAABBTreeCollisionManager_Array::unregisterObject(CollisionObject< + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::setup() + { + if(!setup_) +@@ -826,7 +809,6 @@ void DynamicAABBTreeCollisionManager_Array::setup() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::update() + { + for(auto it = table.cbegin(), end = table.cend(); it != end; ++it) +@@ -844,7 +826,6 @@ void DynamicAABBTreeCollisionManager_Array::update() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::update_(CollisionObject* updated_obj) + { + const auto it = table.find(updated_obj); +@@ -859,7 +840,6 @@ void DynamicAABBTreeCollisionManager_Array::update_(CollisionObject* updat + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::update(CollisionObject* updated_obj) + { + update_(updated_obj); +@@ -868,7 +848,6 @@ void DynamicAABBTreeCollisionManager_Array::update(CollisionObject* update + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::update(const std::vector*>& updated_objs) + { + for(size_t i = 0, size = updated_objs.size(); i < size; ++i) +@@ -878,7 +857,6 @@ void DynamicAABBTreeCollisionManager_Array::update(const std::vector +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::clear() + { + dtree.clear(); +@@ -887,7 +865,6 @@ void DynamicAABBTreeCollisionManager_Array::clear() + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::getObjects(std::vector*>& objs) const + { + objs.resize(this->size()); +@@ -896,7 +873,6 @@ void DynamicAABBTreeCollisionManager_Array::getObjects(std::vector +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::collide(CollisionObject* obj, void* cdata, CollisionCallBack callback) const + { + if(size() == 0) return; +@@ -922,7 +898,6 @@ void DynamicAABBTreeCollisionManager_Array::collide(CollisionObject* obj, + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::distance(CollisionObject* obj, void* cdata, DistanceCallBack callback) const + { + if(size() == 0) return; +@@ -949,7 +924,6 @@ void DynamicAABBTreeCollisionManager_Array::distance(CollisionObject* obj, + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::collide(void* cdata, CollisionCallBack callback) const + { + if(size() == 0) return; +@@ -958,7 +932,6 @@ void DynamicAABBTreeCollisionManager_Array::collide(void* cdata, CollisionCal + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::distance(void* cdata, DistanceCallBack callback) const + { + if(size() == 0) return; +@@ -968,7 +941,6 @@ void DynamicAABBTreeCollisionManager_Array::distance(void* cdata, DistanceCal + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::collide(BroadPhaseCollisionManager* other_manager_, void* cdata, CollisionCallBack callback) const + { + DynamicAABBTreeCollisionManager_Array* other_manager = static_cast(other_manager_); +@@ -978,7 +950,6 @@ void DynamicAABBTreeCollisionManager_Array::collide(BroadPhaseCollisionManage + + //============================================================================== + template +-FCL_EXPORT + void DynamicAABBTreeCollisionManager_Array::distance(BroadPhaseCollisionManager* other_manager_, void* cdata, DistanceCallBack callback) const + { + DynamicAABBTreeCollisionManager_Array* other_manager = static_cast(other_manager_); +@@ -989,7 +960,6 @@ void DynamicAABBTreeCollisionManager_Array::distance(BroadPhaseCollisionManag + + //============================================================================== + template +-FCL_EXPORT + bool DynamicAABBTreeCollisionManager_Array::empty() const + { + return dtree.empty(); +@@ -997,7 +967,6 @@ bool DynamicAABBTreeCollisionManager_Array::empty() const + + //============================================================================== + template +-FCL_EXPORT + size_t DynamicAABBTreeCollisionManager_Array::size() const + { + return dtree.size(); +@@ -1005,7 +974,6 @@ size_t DynamicAABBTreeCollisionManager_Array::size() const + + //============================================================================== + template +-FCL_EXPORT + const detail::implementation_array::HierarchyTree>& + DynamicAABBTreeCollisionManager_Array::getTree() const + { +diff --git a/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h b/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h +index 3d535f8..df4421e 100644 +--- a/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h ++++ b/include/fcl/broadphase/broadphase_dynamic_AABB_tree_array.h +@@ -52,7 +52,7 @@ namespace fcl + { + + template +-class FCL_EXPORT DynamicAABBTreeCollisionManager_Array : public BroadPhaseCollisionManager ++class DynamicAABBTreeCollisionManager_Array : public BroadPhaseCollisionManager + { + public: + +diff --git a/include/fcl/broadphase/broadphase_interval_tree-inl.h b/include/fcl/broadphase/broadphase_interval_tree-inl.h +index dcc4f6d..6f978b3 100644 +--- a/include/fcl/broadphase/broadphase_interval_tree-inl.h ++++ b/include/fcl/broadphase/broadphase_interval_tree-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT IntervalTreeCollisionManager; ++class IntervalTreeCollisionManager; + + //============================================================================== + template +diff --git a/include/fcl/broadphase/broadphase_interval_tree.h b/include/fcl/broadphase/broadphase_interval_tree.h +index 79c5467..8d28f21 100644 +--- a/include/fcl/broadphase/broadphase_interval_tree.h ++++ b/include/fcl/broadphase/broadphase_interval_tree.h +@@ -48,7 +48,7 @@ namespace fcl + + /// @brief Collision manager based on interval tree + template +-class FCL_EXPORT IntervalTreeCollisionManager : public BroadPhaseCollisionManager ++class IntervalTreeCollisionManager : public BroadPhaseCollisionManager + { + public: + IntervalTreeCollisionManager(); +@@ -147,7 +147,7 @@ using IntervalTreeCollisionManagerd = IntervalTreeCollisionManager; + + /// @brief SAP end point + template +-struct FCL_EXPORT IntervalTreeCollisionManager::EndPoint ++struct IntervalTreeCollisionManager::EndPoint + { + /// @brief object related with the end point + CollisionObject* obj; +@@ -163,7 +163,7 @@ struct FCL_EXPORT IntervalTreeCollisionManager::EndPoint + + /// @brief Extention interval tree's interval to SAP interval, adding more information + template +-struct FCL_EXPORT IntervalTreeCollisionManager::SAPInterval : public detail::SimpleInterval ++struct IntervalTreeCollisionManager::SAPInterval : public detail::SimpleInterval + { + CollisionObject* obj; + +diff --git a/include/fcl/broadphase/broadphase_spatialhash-inl.h b/include/fcl/broadphase/broadphase_spatialhash-inl.h +index 12551ce..725d489 100644 +--- a/include/fcl/broadphase/broadphase_spatialhash-inl.h ++++ b/include/fcl/broadphase/broadphase_spatialhash-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SpatialHashingCollisionManager< ++class SpatialHashingCollisionManager< + double, + detail::SimpleHashTable< + AABB, CollisionObject*, detail::SpatialHash>>; +diff --git a/include/fcl/broadphase/broadphase_spatialhash.h b/include/fcl/broadphase/broadphase_spatialhash.h +index a21d041..96529b2 100644 +--- a/include/fcl/broadphase/broadphase_spatialhash.h ++++ b/include/fcl/broadphase/broadphase_spatialhash.h +@@ -53,7 +53,7 @@ namespace fcl + template, CollisionObject*, detail::SpatialHash> > +-class FCL_EXPORT SpatialHashingCollisionManager : public BroadPhaseCollisionManager ++class SpatialHashingCollisionManager : public BroadPhaseCollisionManager + { + public: + SpatialHashingCollisionManager( +diff --git a/include/fcl/broadphase/detail/hierarchy_tree.h b/include/fcl/broadphase/detail/hierarchy_tree.h +index 456314a..bdea6c9 100644 +--- a/include/fcl/broadphase/detail/hierarchy_tree.h ++++ b/include/fcl/broadphase/detail/hierarchy_tree.h +@@ -55,7 +55,7 @@ namespace detail + + /// @brief Class for hierarchy tree structure + template +-class FCL_EXPORT HierarchyTree ++class HierarchyTree + { + public: + +diff --git a/include/fcl/broadphase/detail/hierarchy_tree_array.h b/include/fcl/broadphase/detail/hierarchy_tree_array.h +index 85e80fe..8145a04 100644 +--- a/include/fcl/broadphase/detail/hierarchy_tree_array.h ++++ b/include/fcl/broadphase/detail/hierarchy_tree_array.h +@@ -58,7 +58,7 @@ namespace implementation_array + + /// @brief Class for hierarchy tree structure + template +-class FCL_EXPORT HierarchyTree ++class HierarchyTree + { + using S = typename BV::S; + typedef NodeBase NodeType; +diff --git a/include/fcl/broadphase/detail/interval_tree.h b/include/fcl/broadphase/detail/interval_tree.h +index 6573520..cc4a714 100644 +--- a/include/fcl/broadphase/detail/interval_tree.h ++++ b/include/fcl/broadphase/detail/interval_tree.h +@@ -51,7 +51,7 @@ namespace detail { + /// right branch in searching for intervals but possibly come back + /// and check the left branch as well. + template +-struct FCL_EXPORT it_recursion_node ++struct it_recursion_node + { + public: + IntervalTreeNode* start_node; +@@ -69,7 +69,7 @@ struct it_recursion_node; + + /// @brief Interval tree + template +-class FCL_EXPORT IntervalTree ++class IntervalTree + { + public: + +diff --git a/include/fcl/broadphase/detail/interval_tree_node-inl.h b/include/fcl/broadphase/detail/interval_tree_node-inl.h +index 2badc04..6e2e487 100644 +--- a/include/fcl/broadphase/detail/interval_tree_node-inl.h ++++ b/include/fcl/broadphase/detail/interval_tree_node-inl.h +@@ -47,7 +47,7 @@ namespace detail { + + //============================================================================== + extern template +-class FCL_EXPORT IntervalTreeNode; ++class IntervalTreeNode; + + //============================================================================== + template +diff --git a/include/fcl/broadphase/detail/interval_tree_node.h b/include/fcl/broadphase/detail/interval_tree_node.h +index 537adab..8e243b3 100644 +--- a/include/fcl/broadphase/detail/interval_tree_node.h ++++ b/include/fcl/broadphase/detail/interval_tree_node.h +@@ -48,11 +48,11 @@ namespace detail + { + + template +-class FCL_EXPORT IntervalTree; ++class IntervalTree; + + /// @brief The node for interval tree + template +-class FCL_EXPORT IntervalTreeNode ++class IntervalTreeNode + { + public: + +diff --git a/include/fcl/broadphase/detail/morton-inl.h b/include/fcl/broadphase/detail/morton-inl.h +index cb23207..af52838 100644 +--- a/include/fcl/broadphase/detail/morton-inl.h ++++ b/include/fcl/broadphase/detail/morton-inl.h +@@ -49,14 +49,6 @@ namespace detail { + extern template + uint32 quantize(double x, uint32 n); + +-//============================================================================== +-extern template +-struct morton_functor; +- +-//============================================================================== +-extern template +-struct morton_functor; +- + //============================================================================== + template + uint32 quantize(S x, uint32 n) +diff --git a/include/fcl/broadphase/detail/morton.h b/include/fcl/broadphase/detail/morton.h +index 6b430c4..7a840e4 100644 +--- a/include/fcl/broadphase/detail/morton.h ++++ b/include/fcl/broadphase/detail/morton.h +@@ -52,7 +52,6 @@ namespace detail + { + + template +-FCL_EXPORT + uint32 quantize(S x, uint32 n); + + /// @brief compute 30 bit morton code +@@ -68,11 +67,11 @@ uint64 morton_code60(uint32 x, uint32 y, uint32 z); + /// a 30- or 60-bit code, respectively, and for `std::bitset` where + /// N is the length of the code and must be a multiple of 3. + template +-struct FCL_EXPORT morton_functor {}; ++struct morton_functor {}; + + /// @brief Functor to compute 30 bit morton code for a given AABB + template +-struct FCL_EXPORT morton_functor ++struct morton_functor + { + morton_functor(const AABB& bbox); + +@@ -89,7 +88,7 @@ using morton_functoru32d = morton_functor; + + /// @brief Functor to compute 60 bit morton code for a given AABB + template +-struct FCL_EXPORT morton_functor ++struct morton_functor + { + morton_functor(const AABB& bbox); + +@@ -107,7 +106,7 @@ using morton_functoru64d = morton_functor; + /// @brief Functor to compute N bit morton code for a given AABB + /// N must be a multiple of 3. + template +-struct FCL_EXPORT morton_functor> ++struct morton_functor> + { + static_assert(N%3==0, "Number of bits must be a multiple of 3"); + +diff --git a/include/fcl/broadphase/detail/simple_hash_table.h b/include/fcl/broadphase/detail/simple_hash_table.h +index 2708d02..d45d3c9 100644 +--- a/include/fcl/broadphase/detail/simple_hash_table.h ++++ b/include/fcl/broadphase/detail/simple_hash_table.h +@@ -52,7 +52,7 @@ namespace detail + /// @brief A simple hash table implemented as multiple buckets. HashFnc is any + /// extended hash function: HashFnc(key) = {index1, index2, ..., } + template +-class FCL_EXPORT SimpleHashTable ++class SimpleHashTable + { + protected: + typedef std::list Bin; +diff --git a/include/fcl/broadphase/detail/simple_interval.h b/include/fcl/broadphase/detail/simple_interval.h +index ee8cbca..1b85163 100644 +--- a/include/fcl/broadphase/detail/simple_interval.h ++++ b/include/fcl/broadphase/detail/simple_interval.h +@@ -49,7 +49,7 @@ namespace detail + /// @brief Interval trees implemented using red-black-trees as described in + /// the book Introduction_To_Algorithms_ by Cormen, Leisserson, and Rivest. + template +-struct FCL_EXPORT SimpleInterval ++struct SimpleInterval + { + public: + virtual ~SimpleInterval(); +diff --git a/include/fcl/broadphase/detail/sparse_hash_table.h b/include/fcl/broadphase/detail/sparse_hash_table.h +index 8f1a133..f2d4f0f 100644 +--- a/include/fcl/broadphase/detail/sparse_hash_table.h ++++ b/include/fcl/broadphase/detail/sparse_hash_table.h +@@ -51,12 +51,12 @@ namespace detail + { + + template +-class FCL_EXPORT unordered_map_hash_table : public std::unordered_map {}; ++class unordered_map_hash_table : public std::unordered_map {}; + + /// @brief A hash table implemented using unordered_map + template class TableT = unordered_map_hash_table> +-class FCL_EXPORT SparseHashTable ++class SparseHashTable + { + protected: + HashFnc h_; +diff --git a/include/fcl/broadphase/detail/spatial_hash.h b/include/fcl/broadphase/detail/spatial_hash.h +index b3f1cdd..ebb25a5 100644 +--- a/include/fcl/broadphase/detail/spatial_hash.h ++++ b/include/fcl/broadphase/detail/spatial_hash.h +@@ -48,7 +48,7 @@ namespace detail + + /// @brief Spatial hash function: hash an AABB to a set of integer values + template +-struct FCL_EXPORT SpatialHash ++struct SpatialHash + { + using S = S_; + +diff --git a/include/fcl/common/detail/profiler.h b/include/fcl/common/detail/profiler.h +index 76e3675..108e658 100644 +--- a/include/fcl/common/detail/profiler.h ++++ b/include/fcl/common/detail/profiler.h +@@ -68,13 +68,13 @@ public: + + /// @brief This instance will call Profiler::begin() when constructed and + /// Profiler::end() when it goes out of scope. +- class FCL_EXPORT ScopedBlock; ++ class ScopedBlock; + + /// @brief This instance will call Profiler::start() when constructed and + /// Profiler::stop() when it goes out of scope. + /// If the profiler was already started, this block's constructor and + /// destructor take no action +- class FCL_EXPORT ScopedStart; ++ class ScopedStart; + + /// @brief Return an instance of the class + static Profiler& Instance(void); +diff --git a/include/fcl/common/types.h b/include/fcl/common/types.h +index 892e2b0..32af2b5 100644 +--- a/include/fcl/common/types.h ++++ b/include/fcl/common/types.h +@@ -142,7 +142,7 @@ inline std::shared_ptr<_Tp> make_aligned_shared(_Args&&... __args) + // C++11 compatible version is available since Eigen 3.2.9 so we use this copy + // for Eigen (< 3.2.9). + template +-class FCL_EXPORT aligned_allocator_cpp11 : public std::allocator ++class aligned_allocator_cpp11 : public std::allocator + { + public: + typedef std::size_t size_type; +diff --git a/include/fcl/geometry/bvh/BVH_model.h b/include/fcl/geometry/bvh/BVH_model.h +index 294d521..bab7304 100644 +--- a/include/fcl/geometry/bvh/BVH_model.h ++++ b/include/fcl/geometry/bvh/BVH_model.h +@@ -54,7 +54,7 @@ namespace fcl + + /// @brief A class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewed as a degraded version of mesh) + template +-class FCL_EXPORT BVHModel : public CollisionGeometry ++class BVHModel : public CollisionGeometry + { + public: + +diff --git a/include/fcl/geometry/bvh/BVH_utility-inl.h b/include/fcl/geometry/bvh/BVH_utility-inl.h +index 2196ca4..a20a0f2 100644 +--- a/include/fcl/geometry/bvh/BVH_utility-inl.h ++++ b/include/fcl/geometry/bvh/BVH_utility-inl.h +@@ -57,7 +57,6 @@ void BVHExpand( + + //============================================================================== + template +-FCL_EXPORT + void BVHExpand(BVHModel& model, const Variance3* ucs, S r) + { + for(int i = 0; i < model.num_bvs; ++i) +@@ -85,7 +84,6 @@ void BVHExpand(BVHModel& model, const Variance3* ucs, S r) + + //============================================================================== + template +-FCL_EXPORT + void BVHExpand( + BVHModel>& model, + const Variance3* ucs, +@@ -129,7 +127,6 @@ void BVHExpand( + + //============================================================================== + template +-FCL_EXPORT + void BVHExpand( + BVHModel>& model, + const Variance3* ucs, +diff --git a/include/fcl/geometry/bvh/BVH_utility.h b/include/fcl/geometry/bvh/BVH_utility.h +index 68e3974..a086222 100644 +--- a/include/fcl/geometry/bvh/BVH_utility.h ++++ b/include/fcl/geometry/bvh/BVH_utility.h +@@ -47,20 +47,17 @@ namespace fcl + /// @brief Expand the BVH bounding boxes according to the variance matrix + /// corresponding to the data stored within each BV node + template +-FCL_EXPORT + void BVHExpand(BVHModel& model, const Variance3* ucs, S r); + + /// @brief Expand the BVH bounding boxes according to the corresponding variance + /// information, for OBB + template +-FCL_EXPORT + void BVHExpand( + BVHModel>& model, const Variance3* ucs, S r = 1.0); + + /// @brief Expand the BVH bounding boxes according to the corresponding variance + /// information, for RSS + template +-FCL_EXPORT + void BVHExpand( + BVHModel>& model, const Variance3* ucs, S r = 1.0); + +diff --git a/include/fcl/geometry/bvh/BV_node.h b/include/fcl/geometry/bvh/BV_node.h +index 08dabbc..b87b9fd 100644 +--- a/include/fcl/geometry/bvh/BV_node.h ++++ b/include/fcl/geometry/bvh/BV_node.h +@@ -49,7 +49,7 @@ namespace fcl + + /// @brief A class describing a bounding volume node. It includes the tree structure providing in BVNodeBase and also the geometry data provided in BV template parameter. + template +-struct FCL_EXPORT BVNode : public BVNodeBase ++struct BVNode : public BVNodeBase + { + using S = typename BV::S; + +diff --git a/include/fcl/geometry/bvh/detail/BV_fitter.h b/include/fcl/geometry/bvh/detail/BV_fitter.h +index c78c523..c31e2b8 100644 +--- a/include/fcl/geometry/bvh/detail/BV_fitter.h ++++ b/include/fcl/geometry/bvh/detail/BV_fitter.h +@@ -53,7 +53,7 @@ namespace detail + + /// @brief The class for the default algorithm fitting a bounding volume to a set of points + template +-class FCL_EXPORT BVFitter : public BVFitterBase ++class BVFitter : public BVFitterBase + { + public: + +diff --git a/include/fcl/geometry/bvh/detail/BV_fitter_base.h b/include/fcl/geometry/bvh/detail/BV_fitter_base.h +index 3e10fbb..6bc1db1 100644 +--- a/include/fcl/geometry/bvh/detail/BV_fitter_base.h ++++ b/include/fcl/geometry/bvh/detail/BV_fitter_base.h +@@ -52,7 +52,7 @@ namespace detail + + /// @brief Interface for fitting a bv given the triangles or points inside it. + template +-class FCL_EXPORT BVFitterBase ++class BVFitterBase + { + public: + +diff --git a/include/fcl/geometry/bvh/detail/BV_splitter.h b/include/fcl/geometry/bvh/detail/BV_splitter.h +index 7480f77..b155610 100644 +--- a/include/fcl/geometry/bvh/detail/BV_splitter.h ++++ b/include/fcl/geometry/bvh/detail/BV_splitter.h +@@ -62,7 +62,7 @@ enum SplitMethodType + + /// @brief A class describing the split rule that splits each BV node + template +-class FCL_EXPORT BVSplitter : public BVSplitterBase ++class BVSplitter : public BVSplitterBase + { + public: + +diff --git a/include/fcl/geometry/bvh/detail/BV_splitter_base.h b/include/fcl/geometry/bvh/detail/BV_splitter_base.h +index 893c2be..595b794 100644 +--- a/include/fcl/geometry/bvh/detail/BV_splitter_base.h ++++ b/include/fcl/geometry/bvh/detail/BV_splitter_base.h +@@ -53,7 +53,7 @@ namespace detail + + /// @brief Base interface for BV splitting algorithm + template +-class FCL_EXPORT BVSplitterBase ++class BVSplitterBase + { + public: + +diff --git a/include/fcl/geometry/collision_geometry-inl.h b/include/fcl/geometry/collision_geometry-inl.h +index b569532..29bacab 100644 +--- a/include/fcl/geometry/collision_geometry-inl.h ++++ b/include/fcl/geometry/collision_geometry-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT CollisionGeometry; ++class CollisionGeometry; + + //============================================================================== + template +diff --git a/include/fcl/geometry/collision_geometry.h b/include/fcl/geometry/collision_geometry.h +index 21fe849..09d34b8 100644 +--- a/include/fcl/geometry/collision_geometry.h ++++ b/include/fcl/geometry/collision_geometry.h +@@ -55,7 +55,7 @@ enum NODE_TYPE {BV_UNKNOWN, BV_AABB, BV_OBB, BV_RSS, BV_kIOS, BV_OBBRSS, BV_KDOP + + /// @brief The geometry for the object for collision or distance computation + template +-class FCL_EXPORT CollisionGeometry ++class CollisionGeometry + { + public: + CollisionGeometry(); +diff --git a/include/fcl/geometry/octree/octree-inl.h b/include/fcl/geometry/octree/octree-inl.h +index f50fe81..7835348 100644 +--- a/include/fcl/geometry/octree/octree-inl.h ++++ b/include/fcl/geometry/octree/octree-inl.h +@@ -51,7 +51,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT OcTree; ++class OcTree; + + //============================================================================== + extern template +diff --git a/include/fcl/geometry/octree/octree.h b/include/fcl/geometry/octree/octree.h +index 4264148..d0a6b1c 100644 +--- a/include/fcl/geometry/octree/octree.h ++++ b/include/fcl/geometry/octree/octree.h +@@ -61,7 +61,7 @@ namespace fcl + /// fcl/config.h if and only if octomap was found. Doxygen documentation will + /// be generated whether or not octomap was found. + template +-class FCL_EXPORT OcTree : public CollisionGeometry ++class OcTree : public CollisionGeometry + { + private: + std::shared_ptr tree; +@@ -190,7 +190,6 @@ using OcTreed = OcTree; + + /// @brief compute the bounding volume of an octree node's i-th child + template +-FCL_EXPORT + void computeChildBV(const AABB& root_bv, unsigned int i, AABB& child_bv); + + } // namespace fcl +diff --git a/include/fcl/geometry/shape/box-inl.h b/include/fcl/geometry/shape/box-inl.h +index 053119a..474f6e3 100644 +--- a/include/fcl/geometry/shape/box-inl.h ++++ b/include/fcl/geometry/shape/box-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Box; ++class Box; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/box.h b/include/fcl/geometry/shape/box.h +index d15e9f2..5460828 100644 +--- a/include/fcl/geometry/shape/box.h ++++ b/include/fcl/geometry/shape/box.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Center at zero point, axis aligned box + template +-class FCL_EXPORT Box : public ShapeBase ++class Box : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/capsule-inl.h b/include/fcl/geometry/shape/capsule-inl.h +index b2add91..b1bfa45 100644 +--- a/include/fcl/geometry/shape/capsule-inl.h ++++ b/include/fcl/geometry/shape/capsule-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Capsule; ++class Capsule; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/capsule.h b/include/fcl/geometry/shape/capsule.h +index 5add95e..831deed 100644 +--- a/include/fcl/geometry/shape/capsule.h ++++ b/include/fcl/geometry/shape/capsule.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Center at zero point capsule + template +-class FCL_EXPORT Capsule : public ShapeBase ++class Capsule : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/cone-inl.h b/include/fcl/geometry/shape/cone-inl.h +index 3b023fc..d52771d 100644 +--- a/include/fcl/geometry/shape/cone-inl.h ++++ b/include/fcl/geometry/shape/cone-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Cone; ++class Cone; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/cone.h b/include/fcl/geometry/shape/cone.h +index ef9180c..5281220 100644 +--- a/include/fcl/geometry/shape/cone.h ++++ b/include/fcl/geometry/shape/cone.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Center at zero cone + template +-class FCL_EXPORT Cone : public ShapeBase ++class Cone : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/convex-inl.h b/include/fcl/geometry/shape/convex-inl.h +index 10adc69..09dc82c 100644 +--- a/include/fcl/geometry/shape/convex-inl.h ++++ b/include/fcl/geometry/shape/convex-inl.h +@@ -50,7 +50,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Convex; ++class Convex; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/convex.h b/include/fcl/geometry/shape/convex.h +index d817b4c..e911613 100644 +--- a/include/fcl/geometry/shape/convex.h ++++ b/include/fcl/geometry/shape/convex.h +@@ -80,7 +80,7 @@ namespace fcl + /// + /// @tparam S_ The scalar type; must be a valid Eigen scalar. + template +-class FCL_EXPORT Convex : public ShapeBase ++class Convex : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/cylinder-inl.h b/include/fcl/geometry/shape/cylinder-inl.h +index f5a6211..7a351a1 100644 +--- a/include/fcl/geometry/shape/cylinder-inl.h ++++ b/include/fcl/geometry/shape/cylinder-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Cylinder; ++class Cylinder; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/cylinder.h b/include/fcl/geometry/shape/cylinder.h +index bd67d31..5e33aec 100644 +--- a/include/fcl/geometry/shape/cylinder.h ++++ b/include/fcl/geometry/shape/cylinder.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Center at zero cylinder + template +-class FCL_EXPORT Cylinder : public ShapeBase ++class Cylinder : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/ellipsoid-inl.h b/include/fcl/geometry/shape/ellipsoid-inl.h +index 5bbf946..ff6fea0 100644 +--- a/include/fcl/geometry/shape/ellipsoid-inl.h ++++ b/include/fcl/geometry/shape/ellipsoid-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Ellipsoid; ++class Ellipsoid; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/ellipsoid.h b/include/fcl/geometry/shape/ellipsoid.h +index 85632a9..3dfd1c0 100644 +--- a/include/fcl/geometry/shape/ellipsoid.h ++++ b/include/fcl/geometry/shape/ellipsoid.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Center at zero point ellipsoid + template +-class FCL_EXPORT Ellipsoid : public ShapeBase ++class Ellipsoid : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/halfspace-inl.h b/include/fcl/geometry/shape/halfspace-inl.h +index bc58f80..fe3c0d3 100644 +--- a/include/fcl/geometry/shape/halfspace-inl.h ++++ b/include/fcl/geometry/shape/halfspace-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Halfspace; ++class Halfspace; + + //============================================================================== + extern template +diff --git a/include/fcl/geometry/shape/halfspace.h b/include/fcl/geometry/shape/halfspace.h +index e679759..641241c 100644 +--- a/include/fcl/geometry/shape/halfspace.h ++++ b/include/fcl/geometry/shape/halfspace.h +@@ -56,7 +56,7 @@ namespace fcl + /// in the positive side of the separation plane (i.e. {x | n * x > d}) are + /// outside the half space. + template +-class FCL_EXPORT Halfspace : public ShapeBase ++class Halfspace : public ShapeBase + { + public: + +@@ -103,7 +103,6 @@ using Halfspacef = Halfspace; + using Halfspaced = Halfspace; + + template +-FCL_EXPORT + Halfspace transform(const Halfspace& a, const Transform3& tf); + + } // namespace fcl +diff --git a/include/fcl/geometry/shape/plane-inl.h b/include/fcl/geometry/shape/plane-inl.h +index 2e5da9c..853bd2f 100644 +--- a/include/fcl/geometry/shape/plane-inl.h ++++ b/include/fcl/geometry/shape/plane-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Plane; ++class Plane; + + //============================================================================== + extern template +diff --git a/include/fcl/geometry/shape/plane.h b/include/fcl/geometry/shape/plane.h +index bcf3421..6dfb074 100644 +--- a/include/fcl/geometry/shape/plane.h ++++ b/include/fcl/geometry/shape/plane.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Infinite plane + template +-class FCL_EXPORT Plane : public ShapeBase ++class Plane : public ShapeBase + { + public: + +@@ -93,7 +93,6 @@ using Planef = Plane; + using Planed = Plane; + + template +-FCL_EXPORT + Plane transform(const Plane& a, const Transform3& tf); + + } // namespace fcl +diff --git a/include/fcl/geometry/shape/shape_base-inl.h b/include/fcl/geometry/shape/shape_base-inl.h +index b3148c4..ea8fa19 100644 +--- a/include/fcl/geometry/shape/shape_base-inl.h ++++ b/include/fcl/geometry/shape/shape_base-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT ShapeBase; ++class ShapeBase; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/shape_base.h b/include/fcl/geometry/shape/shape_base.h +index 6acc6da..1f68aa2 100644 +--- a/include/fcl/geometry/shape/shape_base.h ++++ b/include/fcl/geometry/shape/shape_base.h +@@ -45,7 +45,7 @@ namespace fcl + + /// @brief Base class for all basic geometric shapes + template +-class FCL_EXPORT ShapeBase : public CollisionGeometry ++class ShapeBase : public CollisionGeometry + { + public: + +diff --git a/include/fcl/geometry/shape/sphere-inl.h b/include/fcl/geometry/shape/sphere-inl.h +index 0da7eea..6a9a2d1 100644 +--- a/include/fcl/geometry/shape/sphere-inl.h ++++ b/include/fcl/geometry/shape/sphere-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Sphere; ++class Sphere; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/sphere.h b/include/fcl/geometry/shape/sphere.h +index 48b6792..d33a3f0 100644 +--- a/include/fcl/geometry/shape/sphere.h ++++ b/include/fcl/geometry/shape/sphere.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Center at zero point sphere + template +-class FCL_EXPORT Sphere : public ShapeBase ++class Sphere : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/triangle_p-inl.h b/include/fcl/geometry/shape/triangle_p-inl.h +index f48d41b..dc97e46 100644 +--- a/include/fcl/geometry/shape/triangle_p-inl.h ++++ b/include/fcl/geometry/shape/triangle_p-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT TriangleP; ++class TriangleP; + + //============================================================================== + template +diff --git a/include/fcl/geometry/shape/triangle_p.h b/include/fcl/geometry/shape/triangle_p.h +index 7cc18ca..28e911a 100644 +--- a/include/fcl/geometry/shape/triangle_p.h ++++ b/include/fcl/geometry/shape/triangle_p.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Triangle stores the points instead of only indices of points + template +-class FCL_EXPORT TriangleP : public ShapeBase ++class TriangleP : public ShapeBase + { + public: + +diff --git a/include/fcl/geometry/shape/utility-inl.h b/include/fcl/geometry/shape/utility-inl.h +index ca42a0b..397eb72 100644 +--- a/include/fcl/geometry/shape/utility-inl.h ++++ b/include/fcl/geometry/shape/utility-inl.h +@@ -122,7 +122,7 @@ namespace detail { + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl ++struct ComputeBVImpl + { + static void run(const Shape& s, const Transform3& tf, BV& bv) + { +@@ -134,7 +134,7 @@ struct FCL_EXPORT ComputeBVImpl + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Box> ++struct ComputeBVImpl, Box> + { + static void run(const Box& s, const Transform3& tf, AABB& bv) + { +@@ -153,7 +153,7 @@ struct FCL_EXPORT ComputeBVImpl, Box> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Box> ++struct ComputeBVImpl, Box> + { + static void run(const Box& s, const Transform3& tf, OBB& bv) + { +@@ -165,7 +165,7 @@ struct FCL_EXPORT ComputeBVImpl, Box> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Capsule> ++struct ComputeBVImpl, Capsule> + { + static void run(const Capsule& s, const Transform3& tf, AABB& bv) + { +@@ -184,7 +184,7 @@ struct FCL_EXPORT ComputeBVImpl, Capsule> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Capsule> ++struct ComputeBVImpl, Capsule> + { + static void run(const Capsule& s, const Transform3& tf, OBB& bv) + { +@@ -196,7 +196,7 @@ struct FCL_EXPORT ComputeBVImpl, Capsule> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Cone> ++struct ComputeBVImpl, Cone> + { + static void run(const Cone& s, const Transform3& tf, AABB& bv) + { +@@ -215,7 +215,7 @@ struct FCL_EXPORT ComputeBVImpl, Cone> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Cone> ++struct ComputeBVImpl, Cone> + { + static void run(const Cone& s, const Transform3& tf, OBB& bv) + { +@@ -227,7 +227,7 @@ struct FCL_EXPORT ComputeBVImpl, Cone> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Convex> ++struct ComputeBVImpl, Convex> + { + static void run(const Convex& s, const Transform3& tf, AABB& bv) + { +@@ -247,7 +247,7 @@ struct FCL_EXPORT ComputeBVImpl, Convex> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Convex> ++struct ComputeBVImpl, Convex> + { + static void run(const Convex& s, const Transform3& tf, OBB& bv) + { +@@ -260,7 +260,7 @@ struct FCL_EXPORT ComputeBVImpl, Convex> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Cylinder> ++struct ComputeBVImpl, Cylinder> + { + static void run(const Cylinder& s, const Transform3& tf, AABB& bv) + { +@@ -279,7 +279,7 @@ struct FCL_EXPORT ComputeBVImpl, Cylinder> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Cylinder> ++struct ComputeBVImpl, Cylinder> + { + static void run(const Cylinder& s, const Transform3& tf, OBB& bv) + { +@@ -291,7 +291,7 @@ struct FCL_EXPORT ComputeBVImpl, Cylinder> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Ellipsoid> ++struct ComputeBVImpl, Ellipsoid> + { + static void run(const Ellipsoid& s, const Transform3& tf, AABB& bv) + { +@@ -310,7 +310,7 @@ struct FCL_EXPORT ComputeBVImpl, Ellipsoid> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Ellipsoid> ++struct ComputeBVImpl, Ellipsoid> + { + static void run(const Ellipsoid& s, const Transform3& tf, OBB& bv) + { +@@ -322,7 +322,7 @@ struct FCL_EXPORT ComputeBVImpl, Ellipsoid> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, AABB& bv) + { +@@ -358,7 +358,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, OBB& bv) + { +@@ -374,7 +374,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, RSS& bv) + { +@@ -390,7 +390,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, OBBRSS& bv) + { +@@ -401,7 +401,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, kIOS& bv) + { +@@ -414,7 +414,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, KDOP& bv) + { +@@ -473,7 +473,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, KDOP& bv) + { +@@ -538,7 +538,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Halfspace> ++struct ComputeBVImpl, Halfspace> + { + static void run(const Halfspace& s, const Transform3& tf, KDOP& bv) + { +@@ -618,7 +618,7 @@ struct FCL_EXPORT ComputeBVImpl, Halfspace> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, AABB& bv) + { +@@ -654,7 +654,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, OBB& bv) + { +@@ -670,7 +670,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, RSS& bv) + { +@@ -689,7 +689,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, OBBRSS& bv) + { +@@ -700,7 +700,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, kIOS& bv) + { +@@ -713,7 +713,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, KDOP& bv) + { +@@ -768,7 +768,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, KDOP& bv) + { +@@ -827,7 +827,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Plane> ++struct ComputeBVImpl, Plane> + { + static void run(const Plane& s, const Transform3& tf, KDOP& bv) + { +@@ -898,7 +898,7 @@ struct FCL_EXPORT ComputeBVImpl, Plane> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Sphere> ++struct ComputeBVImpl, Sphere> + { + static void run(const Sphere& s, const Transform3& tf, AABB& bv) + { +@@ -910,7 +910,7 @@ struct FCL_EXPORT ComputeBVImpl, Sphere> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, Sphere> ++struct ComputeBVImpl, Sphere> + { + static void run(const Sphere& s, const Transform3& tf, OBB& bv) + { +@@ -922,7 +922,7 @@ struct FCL_EXPORT ComputeBVImpl, Sphere> + + //============================================================================== + template +-struct FCL_EXPORT ComputeBVImpl, TriangleP> ++struct ComputeBVImpl, TriangleP> + { + static void run(const TriangleP& s, const Transform3& tf, AABB& bv) + { +@@ -1052,7 +1052,6 @@ struct ComputeBVImpl, TriangleP>; + + //============================================================================== + template +-FCL_EXPORT + void computeBV(const Shape& s, const Transform3& tf, BV& bv) + { + using S = typename BV::S; +diff --git a/include/fcl/geometry/shape/utility.h b/include/fcl/geometry/shape/utility.h +index ec70def..fe0bc62 100644 +--- a/include/fcl/geometry/shape/utility.h ++++ b/include/fcl/geometry/shape/utility.h +@@ -57,72 +57,55 @@ namespace fcl + + /// @brief calculate a bounding volume for a shape in a specific configuration + template +-FCL_EXPORT + void computeBV(const Shape& s, const Transform3& tf, BV& bv); + + /// @brief construct a box shape (with a configuration) from a given bounding volume + template +-FCL_EXPORT + void constructBox(const AABB& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const OBB& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const OBBRSS& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const kIOS& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const RSS& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const KDOP& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const KDOP& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const KDOP& bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const AABB& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const OBB& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const OBBRSS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const kIOS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const RSS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + template +-FCL_EXPORT + void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + } // namespace fcl +diff --git a/include/fcl/math/bv/AABB-inl.h b/include/fcl/math/bv/AABB-inl.h +index 6738006..f4f738c 100644 +--- a/include/fcl/math/bv/AABB-inl.h ++++ b/include/fcl/math/bv/AABB-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT AABB; ++class AABB; + + //============================================================================== + template +diff --git a/include/fcl/math/bv/AABB.h b/include/fcl/math/bv/AABB.h +index f84b737..d785a63 100644 +--- a/include/fcl/math/bv/AABB.h ++++ b/include/fcl/math/bv/AABB.h +@@ -46,7 +46,7 @@ namespace fcl + /// @brief A class describing the AABB collision structure, which is a box in 3D + /// space determined by two diagonal points + template +-class FCL_EXPORT AABB ++class AABB + { + public: + +diff --git a/include/fcl/math/bv/OBB-inl.h b/include/fcl/math/bv/OBB-inl.h +index 4d5455f..07c1644 100644 +--- a/include/fcl/math/bv/OBB-inl.h ++++ b/include/fcl/math/bv/OBB-inl.h +@@ -47,7 +47,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT OBB; ++class OBB; + + //============================================================================== + extern template +diff --git a/include/fcl/math/bv/OBB.h b/include/fcl/math/bv/OBB.h +index 3d7e216..c611070 100644 +--- a/include/fcl/math/bv/OBB.h ++++ b/include/fcl/math/bv/OBB.h +@@ -48,7 +48,7 @@ namespace fcl + + /// @brief Oriented bounding box class + template +-class FCL_EXPORT OBB ++class OBB + { + public: + +@@ -124,29 +124,24 @@ using OBBd = OBB; + + /// @brief Compute the 8 vertices of a OBB + template +-FCL_EXPORT + void computeVertices(const OBB& b, Vector3 vertices[8]); + + /// @brief OBB merge method when the centers of two smaller OBB are far away + template +-FCL_EXPORT + OBB merge_largedist(const OBB& b1, const OBB& b2); + + /// @brief OBB merge method when the centers of two smaller OBB are close + template +-FCL_EXPORT + OBB merge_smalldist(const OBB& b1, const OBB& b2); + + /// @brief Translate the OBB bv + template +-FCL_EXPORT + OBB translate( + const OBB& bv, const Eigen::MatrixBase& t); + + /// @brief Check collision between two obbs, b1 is in configuration (R0, T0) and + /// b2 is in identity. + template +-FCL_EXPORT + bool overlap(const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, + const OBB& b1, const OBB& b2); +@@ -155,7 +150,6 @@ bool overlap(const Eigen::MatrixBase& R0, + /// (R, T) and its half dimension is set by a; the second box is in identity + /// configuration and its half dimension is set by b. + template +-FCL_EXPORT + bool obbDisjoint( + const Matrix3& B, + const Vector3& T, +@@ -166,7 +160,6 @@ bool obbDisjoint( + /// (R, T) and its half dimension is set by a; the second box is in identity + /// configuration and its half dimension is set by b. + template +-FCL_EXPORT + bool obbDisjoint( + const Transform3& tf, + const Vector3& a, +diff --git a/include/fcl/math/bv/OBBRSS-inl.h b/include/fcl/math/bv/OBBRSS-inl.h +index 814a66f..2a749a1 100644 +--- a/include/fcl/math/bv/OBBRSS-inl.h ++++ b/include/fcl/math/bv/OBBRSS-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT OBBRSS; ++class OBBRSS; + + //============================================================================== + extern template +diff --git a/include/fcl/math/bv/OBBRSS.h b/include/fcl/math/bv/OBBRSS.h +index 9f84c11..4f1d656 100644 +--- a/include/fcl/math/bv/OBBRSS.h ++++ b/include/fcl/math/bv/OBBRSS.h +@@ -47,7 +47,7 @@ namespace fcl + /// @brief Class merging the OBB and RSS, can handle collision and distance + /// simultaneously + template +-class FCL_EXPORT OBBRSS ++class OBBRSS + { + public: + +@@ -108,13 +108,11 @@ using OBBRSSd = OBBRSS; + + /// @brief Translate the OBBRSS bv + template +-FCL_EXPORT + OBBRSS translate(const OBBRSS& bv, const Vector3& t); + + /// @brief Check collision between two OBBRSS, b1 is in configuration (R0, T0) + /// and b2 is in indentity + template +-FCL_EXPORT + bool overlap(const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, + const OBBRSS& b1, const OBBRSS& b2); +@@ -122,7 +120,6 @@ bool overlap(const Eigen::MatrixBase& R0, + /// @brief Check collision between two OBBRSS, b1 is in configuration (R0, T0) + /// and b2 is in indentity + template +-FCL_EXPORT + bool overlap( + const Transform3& tf, + const OBBRSS& b1, +@@ -131,7 +128,6 @@ bool overlap( + /// @brief Computate distance between two OBBRSS, b1 is in configuation (R0, T0) + /// and b2 is in indentity; P and Q, is not nullptr, returns the nearest points + template +-FCL_EXPORT + S distance( + const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, +@@ -141,7 +137,6 @@ S distance( + /// @brief Computate distance between two OBBRSS, b1 is in configuation (R0, T0) + /// and b2 is in indentity; P and Q, is not nullptr, returns the nearest points + template +-FCL_EXPORT + S distance( + const Transform3& tf, + const OBBRSS& b1, +diff --git a/include/fcl/math/bv/RSS-inl.h b/include/fcl/math/bv/RSS-inl.h +index 2cbc7dd..68baaa7 100644 +--- a/include/fcl/math/bv/RSS-inl.h ++++ b/include/fcl/math/bv/RSS-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT RSS; ++class RSS; + + //============================================================================== + extern template +diff --git a/include/fcl/math/bv/RSS.h b/include/fcl/math/bv/RSS.h +index 514531c..4aea7fd 100644 +--- a/include/fcl/math/bv/RSS.h ++++ b/include/fcl/math/bv/RSS.h +@@ -55,7 +55,7 @@ namespace fcl + /// relative orientation between frame T and F and p_FoTo_F (the #To field) is + /// the position of T's origin in frame F. + template +-class FCL_EXPORT RSS ++class RSS + { + public: + +@@ -153,7 +153,6 @@ using RSSd = RSS; + + /// @brief Clip value between a and b + template +-FCL_EXPORT + void clipToRange(S& val, S a, S b); + + /// @brief Finds the parameters t & u corresponding to the two closest points on +@@ -169,7 +168,6 @@ void clipToRange(S& val, S a, S b); + /// Reference: "On fast computation of distance between line segments." Vladimir + /// J. Lumelsky, in Information Processing Letters, no. 21, pages 55-61, 1985. + template +-FCL_EXPORT + void segCoords(S& t, S& u, S a, S b, + S A_dot_B, S A_dot_T, S B_dot_T); + +@@ -179,7 +177,6 @@ void segCoords(S& t, S& u, S a, S b, + /// determined by the point Pa and the direction Anorm. + /// A,B, and Anorm are unit vectors. T is the vector between Pa and Pb. + template +-FCL_EXPORT + bool inVoronoi(S a, S b, + S Anorm_dot_B, S Anorm_dot_T, + S A_dot_B, S A_dot_T, S B_dot_T); +@@ -188,7 +185,6 @@ bool inVoronoi(S a, S b, + /// values) are the closest points in the rectangles, both are in the local + /// frame of the first rectangle. + template +-FCL_EXPORT + S rectDistance( + const Matrix3& Rab, + const Vector3& Tab, +@@ -201,7 +197,6 @@ S rectDistance( + /// values) are the closest points in the rectangles, both are in the local + /// frame of the first rectangle. + template +-FCL_EXPORT + S rectDistance( + const Transform3& tfab, + const S a[2], +@@ -215,7 +210,6 @@ S rectDistance( + /// points. Notice that P and Q are both in the local frame of the first RSS + /// (not global frame and not even the local frame of object 1) + template +-FCL_EXPORT + S distance( + const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, +@@ -227,7 +221,6 @@ S distance( + /// @brief Check collision between two RSSs, b1 is in configuration (R0, T0) and + /// b2 is in identity. + template +-FCL_EXPORT + bool overlap( + const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, +@@ -236,7 +229,6 @@ bool overlap( + + /// @brief Translate the RSS bv + template +-FCL_EXPORT + RSS translate(const RSS& bv, const Vector3& t); + + } // namespace fcl +diff --git a/include/fcl/math/bv/kDOP-inl.h b/include/fcl/math/bv/kDOP-inl.h +index f660266..980e9a3 100644 +--- a/include/fcl/math/bv/kDOP-inl.h ++++ b/include/fcl/math/bv/kDOP-inl.h +@@ -47,15 +47,15 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT KDOP; ++class KDOP; + + //============================================================================== + extern template +-class FCL_EXPORT KDOP; ++class KDOP; + + //============================================================================== + extern template +-class FCL_EXPORT KDOP; ++class KDOP; + + //============================================================================== + extern template +@@ -79,7 +79,6 @@ void getDistances(const Vector3& p, double* d); + + //============================================================================== + template +-FCL_EXPORT + KDOP::KDOP() + { + static_assert(N == 16 || N == 18 || N == 24, "N should be 16, 18, or 24"); +@@ -94,7 +93,6 @@ KDOP::KDOP() + + //============================================================================== + template +-FCL_EXPORT + KDOP::KDOP(const Vector3& v) + { + for(std::size_t i = 0; i < 3; ++i) +@@ -112,7 +110,6 @@ KDOP::KDOP(const Vector3& v) + + //============================================================================== + template +-FCL_EXPORT + KDOP::KDOP(const Vector3& a, const Vector3& b) + { + for(std::size_t i = 0; i < 3; ++i) +@@ -131,7 +128,6 @@ KDOP::KDOP(const Vector3& a, const Vector3& b) + + //============================================================================== + template +-FCL_EXPORT + bool KDOP::overlap(const KDOP& other) const + { + for(std::size_t i = 0; i < N / 2; ++i) +@@ -145,7 +141,6 @@ bool KDOP::overlap(const KDOP& other) const + + //============================================================================== + template +-FCL_EXPORT + bool KDOP::inside(const Vector3& p) const + { + for(std::size_t i = 0; i < 3; ++i) +@@ -167,7 +162,6 @@ bool KDOP::inside(const Vector3& p) const + + //============================================================================== + template +-FCL_EXPORT + KDOP& KDOP::operator += (const Vector3& p) + { + for(std::size_t i = 0; i < 3; ++i) +@@ -187,7 +181,6 @@ KDOP& KDOP::operator += (const Vector3& p) + + //============================================================================== + template +-FCL_EXPORT + KDOP& KDOP::operator += (const KDOP& other) + { + for(std::size_t i = 0; i < N / 2; ++i) +@@ -200,7 +193,6 @@ KDOP& KDOP::operator += (const KDOP& other) + + //============================================================================== + template +-FCL_EXPORT + KDOP KDOP::operator + (const KDOP& other) const + { + KDOP res(*this); +@@ -209,7 +201,6 @@ KDOP KDOP::operator + (const KDOP& other) const + + //============================================================================== + template +-FCL_EXPORT + S KDOP::width() const + { + return dist_[N / 2] - dist_[0]; +@@ -217,7 +208,6 @@ S KDOP::width() const + + //============================================================================== + template +-FCL_EXPORT + S KDOP::height() const + { + return dist_[N / 2 + 1] - dist_[1]; +@@ -225,7 +215,6 @@ S KDOP::height() const + + //============================================================================== + template +-FCL_EXPORT + S KDOP::depth() const + { + return dist_[N / 2 + 2] - dist_[2]; +@@ -233,7 +222,6 @@ S KDOP::depth() const + + //============================================================================== + template +-FCL_EXPORT + S KDOP::volume() const + { + return width() * height() * depth(); +@@ -241,7 +229,6 @@ S KDOP::volume() const + + //============================================================================== + template +-FCL_EXPORT + S KDOP::size() const + { + return width() * width() + height() * height() + depth() * depth(); +@@ -249,7 +236,6 @@ S KDOP::size() const + + //============================================================================== + template +-FCL_EXPORT + Vector3 KDOP::center() const + { + return Vector3(dist_[0] + dist_[N / 2], dist_[1] + dist_[N / 2 + 1], dist_[2] + dist_[N / 2 + 2]) * 0.5; +@@ -257,7 +243,6 @@ Vector3 KDOP::center() const + + //============================================================================== + template +-FCL_EXPORT + S KDOP::distance(const KDOP& other, Vector3* P, Vector3* Q) const + { + FCL_UNUSED(other); +@@ -270,7 +255,6 @@ S KDOP::distance(const KDOP& other, Vector3* P, Vector3* Q) co + + //============================================================================== + template +-FCL_EXPORT + S KDOP::dist(std::size_t i) const + { + return dist_[i]; +@@ -278,7 +262,6 @@ S KDOP::dist(std::size_t i) const + + //============================================================================== + template +-FCL_EXPORT + S& KDOP::dist(std::size_t i) + { + return dist_[i]; +@@ -286,7 +269,6 @@ S& KDOP::dist(std::size_t i) + + //============================================================================== + template +-FCL_EXPORT + KDOP translate( + const KDOP& bv, const Eigen::MatrixBase& t) + { +@@ -310,7 +292,6 @@ KDOP translate( + + //============================================================================== + template +-FCL_EXPORT + void minmax(S a, S b, S& minv, S& maxv) + { + if(a > b) +@@ -327,7 +308,6 @@ void minmax(S a, S b, S& minv, S& maxv) + + //============================================================================== + template +-FCL_EXPORT + void minmax(S p, S& minv, S& maxv) + { + if(p > maxv) maxv = p; +@@ -346,7 +326,6 @@ struct GetDistancesImpl + + //============================================================================== + template +-FCL_EXPORT + void getDistances(const Vector3& p, S* d) + { + GetDistancesImpl::run(p, d); +@@ -354,7 +333,7 @@ void getDistances(const Vector3& p, S* d) + + //============================================================================== + template +-struct FCL_EXPORT GetDistancesImpl ++struct GetDistancesImpl + { + static void run(const Vector3& p, S* d) + { +@@ -368,7 +347,7 @@ struct FCL_EXPORT GetDistancesImpl + + //============================================================================== + template +-struct FCL_EXPORT GetDistancesImpl ++struct GetDistancesImpl + { + static void run(const Vector3& p, S* d) + { +@@ -383,7 +362,7 @@ struct FCL_EXPORT GetDistancesImpl + + //============================================================================== + template +-struct FCL_EXPORT GetDistancesImpl ++struct GetDistancesImpl + { + static void run(const Vector3& p, S* d) + { +diff --git a/include/fcl/math/bv/kDOP.h b/include/fcl/math/bv/kDOP.h +index 54b7e9c..8b31216 100644 +--- a/include/fcl/math/bv/kDOP.h ++++ b/include/fcl/math/bv/kDOP.h +@@ -81,7 +81,7 @@ namespace fcl + /// (-1, 1, -1) and (1, -1, 1) --> indices 10 and 22 + /// (1, -1, -1) and (-1, 1, 1) --> indices 11 and 23 + template +-class FCL_EXPORT KDOP ++class KDOP + { + public: + +@@ -152,23 +152,19 @@ using KDOPd = KDOP; + + /// @brief Find the smaller and larger one of two values + template +-FCL_EXPORT + void minmax(S a, S b, S& minv, S& maxv); + + /// @brief Merge the interval [minv, maxv] and value p/ + template +-FCL_EXPORT + void minmax(S p, S& minv, S& maxv); + + /// @brief Compute the distances to planes with normals from KDOP vectors except + /// those of AABB face planes + template +-FCL_EXPORT + void getDistances(const Vector3& p, S* d); + + /// @brief translate the KDOP BV + template +-FCL_EXPORT + KDOP translate( + const KDOP& bv, const Eigen::MatrixBase& t); + +diff --git a/include/fcl/math/bv/kIOS-inl.h b/include/fcl/math/bv/kIOS-inl.h +index 81a802a..0760cdc 100644 +--- a/include/fcl/math/bv/kIOS-inl.h ++++ b/include/fcl/math/bv/kIOS-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT kIOS; ++class kIOS; + + //============================================================================== + template +diff --git a/include/fcl/math/bv/kIOS.h b/include/fcl/math/bv/kIOS.h +index 85f8933..3cf9417 100644 +--- a/include/fcl/math/bv/kIOS.h ++++ b/include/fcl/math/bv/kIOS.h +@@ -45,7 +45,7 @@ namespace fcl + + /// @brief A class describing the kIOS collision structure, which is a set of spheres. + template +-class FCL_EXPORT kIOS ++class kIOS + { + /// @brief One sphere in kIOS + struct kIOS_Sphere +@@ -126,7 +126,6 @@ using kIOSd = kIOS; + + /// @brief Translate the kIOS BV + template +-FCL_EXPORT + kIOS translate( + const kIOS& bv, const Eigen::MatrixBase& t); + +@@ -134,7 +133,6 @@ kIOS translate( + /// and b2 is in identity. + /// @todo Not efficient + template +-FCL_EXPORT + bool overlap( + const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, +@@ -144,7 +142,6 @@ bool overlap( + /// and b2 is in identity. + /// @todo Not efficient + template +-FCL_EXPORT + bool overlap( + const Transform3& tf, + const kIOS& b1, +@@ -153,7 +150,6 @@ bool overlap( + /// @brief Approximate distance between two kIOS bounding volumes + /// @todo P and Q is not returned, need implementation + template +-FCL_EXPORT + S distance( + const Eigen::MatrixBase& R0, + const Eigen::MatrixBase& T0, +@@ -165,7 +161,6 @@ S distance( + /// @brief Approximate distance between two kIOS bounding volumes + /// @todo P and Q is not returned, need implementation + template +-FCL_EXPORT + S distance( + const Transform3& tf, + const kIOS& b1, +diff --git a/include/fcl/math/bv/utility-inl.h b/include/fcl/math/bv/utility-inl.h +index 333ec15..ec01ed4 100644 +--- a/include/fcl/math/bv/utility-inl.h ++++ b/include/fcl/math/bv/utility-inl.h +@@ -62,7 +62,6 @@ namespace OBB_fit_functions { + + //============================================================================== + template +-FCL_EXPORT + void fit1(const Vector3* const ps, OBB& bv) + { + bv.To = ps[0]; +@@ -72,7 +71,6 @@ void fit1(const Vector3* const ps, OBB& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit2(const Vector3* const ps, OBB& bv) + { + const Vector3& p1 = ps[0]; +@@ -88,7 +86,6 @@ void fit2(const Vector3* const ps, OBB& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit3(const Vector3* const ps, OBB& bv) + { + const Vector3& p1 = ps[0]; +@@ -118,7 +115,6 @@ void fit3(const Vector3* const ps, OBB& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit6(const Vector3* const ps, OBB& bv) + { + OBB bv1, bv2; +@@ -129,7 +125,6 @@ void fit6(const Vector3* const ps, OBB& bv) + + //============================================================================== + template +-FCL_EXPORT + void fitn(const Vector3* const ps, int n, OBB& bv) + { + Matrix3 M; +@@ -174,7 +169,6 @@ namespace RSS_fit_functions { + + //============================================================================== + template +-FCL_EXPORT + void fit1(const Vector3* const ps, RSS& bv) + { + bv.To = ps[0]; +@@ -186,7 +180,6 @@ void fit1(const Vector3* const ps, RSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit2(const Vector3* const ps, RSS& bv) + { + const Vector3& p1 = ps[0]; +@@ -204,7 +197,6 @@ void fit2(const Vector3* const ps, RSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit3(const Vector3* const ps, RSS& bv) + { + const Vector3& p1 = ps[0]; +@@ -232,7 +224,6 @@ void fit3(const Vector3* const ps, RSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit6(const Vector3* const ps, RSS& bv) + { + RSS bv1, bv2; +@@ -243,7 +234,6 @@ void fit6(const Vector3* const ps, RSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fitn(const Vector3* const ps, int n, RSS& bv) + { + Matrix3 M; // row first matrix +@@ -293,7 +283,6 @@ namespace kIOS_fit_functions { + + //============================================================================== + template +-FCL_EXPORT + void fit1(const Vector3* const ps, kIOS& bv) + { + bv.num_spheres = 1; +@@ -307,7 +296,6 @@ void fit1(const Vector3* const ps, kIOS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit2(const Vector3* const ps, kIOS& bv) + { + bv.num_spheres = 5; +@@ -343,7 +331,6 @@ void fit2(const Vector3* const ps, kIOS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit3(const Vector3* const ps, kIOS& bv) + { + bv.num_spheres = 3; +@@ -389,7 +376,6 @@ void fit3(const Vector3* const ps, kIOS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fitn(const Vector3* const ps, int n, kIOS& bv) + { + Matrix3 M; +@@ -485,7 +471,6 @@ namespace OBBRSS_fit_functions { + + //============================================================================== + template +-FCL_EXPORT + void fit1(const Vector3* const ps, OBBRSS& bv) + { + OBB_fit_functions::fit1(ps, bv.obb); +@@ -494,7 +479,6 @@ void fit1(const Vector3* const ps, OBBRSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit2(const Vector3* const ps, OBBRSS& bv) + { + OBB_fit_functions::fit2(ps, bv.obb); +@@ -503,7 +487,6 @@ void fit2(const Vector3* const ps, OBBRSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fit3(const Vector3* const ps, OBBRSS& bv) + { + OBB_fit_functions::fit3(ps, bv.obb); +@@ -512,7 +495,6 @@ void fit3(const Vector3* const ps, OBBRSS& bv) + + //============================================================================== + template +-FCL_EXPORT + void fitn(const Vector3* const ps, int n, OBBRSS& bv) + { + OBB_fit_functions::fitn(ps, n, bv.obb); +@@ -541,7 +523,7 @@ void fitn(const Vector3d* const ps, int n, OBBRSS& bv); + + //============================================================================== + template +-struct FCL_EXPORT Fitter ++struct Fitter + { + static void fit(const Vector3* const ps, int n, BV& bv) + { +@@ -552,7 +534,7 @@ struct FCL_EXPORT Fitter + + //============================================================================== + template +-struct FCL_EXPORT Fitter> ++struct Fitter> + { + static void fit(const Vector3* const ps, int n, OBB& bv) + { +@@ -578,7 +560,7 @@ struct FCL_EXPORT Fitter> + + //============================================================================== + template +-struct FCL_EXPORT Fitter> ++struct Fitter> + { + static void fit(const Vector3* const ps, int n, RSS& bv) + { +@@ -601,7 +583,7 @@ struct FCL_EXPORT Fitter> + + //============================================================================== + template +-struct FCL_EXPORT Fitter> ++struct Fitter> + { + static void fit(const Vector3* const ps, int n, kIOS& bv) + { +@@ -624,7 +606,7 @@ struct FCL_EXPORT Fitter> + + //============================================================================== + template +-struct FCL_EXPORT Fitter> ++struct Fitter> + { + static void fit(const Vector3* const ps, int n, OBBRSS& bv) + { +@@ -667,7 +649,6 @@ struct Fitter>; + + //============================================================================== + template +-FCL_EXPORT + void fit(const Vector3* const ps, int n, BV& bv) + { + detail::Fitter::fit(ps, n, bv); +@@ -680,7 +661,7 @@ namespace detail { + /// @brief Convert a bounding volume of type BV1 in configuration tf1 to a + /// bounding volume of type BV2 in I configuration. + template +-class FCL_EXPORT ConvertBVImpl ++class ConvertBVImpl + { + private: + static void run(const BV1& bv1, const Transform3& tf1, BV2& bv2) +@@ -696,7 +677,7 @@ private: + //============================================================================== + /// @brief Convert from AABB to AABB, not very tight but is fast. + template +-class FCL_EXPORT ConvertBVImpl, AABB> ++class ConvertBVImpl, AABB> + { + public: + static void run(const AABB& bv1, const Transform3& tf1, AABB& bv2) +@@ -712,7 +693,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, OBB> ++class ConvertBVImpl, OBB> + { + public: + static void run(const AABB& bv1, const Transform3& tf1, OBB& bv2) +@@ -761,7 +742,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, OBB> ++class ConvertBVImpl, OBB> + { + public: + static void run(const OBB& bv1, const Transform3& tf1, OBB& bv2) +@@ -774,7 +755,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, OBB> ++class ConvertBVImpl, OBB> + { + public: + static void run(const OBBRSS& bv1, const Transform3& tf1, OBB& bv2) +@@ -785,7 +766,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, OBB> ++class ConvertBVImpl, OBB> + { + public: + static void run(const RSS& bv1, const Transform3& tf1, OBB& bv2) +@@ -798,7 +779,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl> ++class ConvertBVImpl> + { + public: + static void run(const BV1& bv1, const Transform3& tf1, AABB& bv2) +@@ -814,7 +795,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl> ++class ConvertBVImpl> + { + public: + static void run(const BV1& bv1, const Transform3& tf1, OBB& bv2) +@@ -827,7 +808,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, RSS> ++class ConvertBVImpl, RSS> + { + public: + static void run(const OBB& bv1, const Transform3& tf1, RSS& bv2) +@@ -854,7 +835,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, RSS> ++class ConvertBVImpl, RSS> + { + public: + static void run(const RSS& bv1, const Transform3& tf1, RSS& bv2) +@@ -870,7 +851,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, RSS> ++class ConvertBVImpl, RSS> + { + public: + static void run(const OBBRSS& bv1, const Transform3& tf1, RSS& bv2) +@@ -881,7 +862,7 @@ public: + + //============================================================================== + template +-class FCL_EXPORT ConvertBVImpl, RSS> ++class ConvertBVImpl, RSS> + { + public: + static void run(const AABB& bv1, const Transform3& tf1, RSS& bv2) +@@ -929,39 +910,39 @@ public: + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, AABB>; ++class ConvertBVImpl, AABB>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, OBB>; ++class ConvertBVImpl, OBB>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, OBB>; ++class ConvertBVImpl, OBB>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, OBB>; ++class ConvertBVImpl, OBB>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, OBB>; ++class ConvertBVImpl, OBB>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, RSS>; ++class ConvertBVImpl, RSS>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, RSS>; ++class ConvertBVImpl, RSS>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, RSS>; ++class ConvertBVImpl, RSS>; + + //============================================================================== + extern template +-class FCL_EXPORT ConvertBVImpl, RSS>; ++class ConvertBVImpl, RSS>; + + //============================================================================== + } // namespace detail +@@ -969,7 +950,6 @@ class FCL_EXPORT ConvertBVImpl, RSS>; + + //============================================================================== + template +-FCL_EXPORT + void convertBV( + const BV1& bv1, const Transform3& tf1, BV2& bv2) + { +diff --git a/include/fcl/math/bv/utility.h b/include/fcl/math/bv/utility.h +index 2cea40c..c10ffde 100644 +--- a/include/fcl/math/bv/utility.h ++++ b/include/fcl/math/bv/utility.h +@@ -46,13 +46,11 @@ namespace fcl + + /// @brief Compute a bounding volume that fits a set of n points. + template +-FCL_EXPORT + void fit(const Vector3* const ps, int n, BV& bv); + + /// @brief Convert a bounding volume of type BV1 in configuration tf1 to + /// bounding volume of type BV2 in identity configuration. + template +-FCL_EXPORT + void convertBV( + const BV1& bv1, const Transform3& tf1, BV2& bv2); + +diff --git a/include/fcl/math/constants.h b/include/fcl/math/constants.h +index ba24176..d94dbc7 100644 +--- a/include/fcl/math/constants.h ++++ b/include/fcl/math/constants.h +@@ -126,7 +126,7 @@ struct ScalarTrait { + /// + /// \tparam S The scalar type for which constant values will be retrieved. + template +-struct FCL_EXPORT constants ++struct constants + { + typedef typename detail::ScalarTrait::type Real; + +diff --git a/include/fcl/math/detail/polysolver-inl.h b/include/fcl/math/detail/polysolver-inl.h +index c2c538c..2bf96e3 100644 +--- a/include/fcl/math/detail/polysolver-inl.h ++++ b/include/fcl/math/detail/polysolver-inl.h +@@ -50,7 +50,7 @@ namespace detail { + + //============================================================================== + extern template +-class FCL_EXPORT PolySolver; ++class PolySolver; + + //============================================================================== + template +diff --git a/include/fcl/math/detail/polysolver.h b/include/fcl/math/detail/polysolver.h +index 52808a9..bcad09f 100644 +--- a/include/fcl/math/detail/polysolver.h ++++ b/include/fcl/math/detail/polysolver.h +@@ -47,7 +47,7 @@ namespace detail { + + /// @brief A class solves polynomial degree (1,2,3) equations + template +-class FCL_EXPORT PolySolver ++class PolySolver + { + public: + /// @brief Solve a linear equation with coefficients c, return roots s and number of roots +diff --git a/include/fcl/math/detail/project-inl.h b/include/fcl/math/detail/project-inl.h +index abe4df6..b8f3d9f 100644 +--- a/include/fcl/math/detail/project-inl.h ++++ b/include/fcl/math/detail/project-inl.h +@@ -48,7 +48,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT Project; ++class Project; + + //============================================================================== + template +diff --git a/include/fcl/math/detail/project.h b/include/fcl/math/detail/project.h +index 39311f2..4b19b0d 100644 +--- a/include/fcl/math/detail/project.h ++++ b/include/fcl/math/detail/project.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Project functions + template +-class FCL_EXPORT Project ++class Project + { + public: + struct ProjectResult +diff --git a/include/fcl/math/geometry-inl.h b/include/fcl/math/geometry-inl.h +index a9d3dc8..149a6b8 100644 +--- a/include/fcl/math/geometry-inl.h ++++ b/include/fcl/math/geometry-inl.h +@@ -145,7 +145,6 @@ namespace detail { + + //============================================================================== + template +-FCL_EXPORT + S maximumDistance_mesh( + const Vector3* const ps, + const Vector3* const ps2, +@@ -190,7 +189,6 @@ S maximumDistance_mesh( + + //============================================================================== + template +-FCL_EXPORT + S maximumDistance_pointcloud( + const Vector3* const ps, + const Vector3* const ps2, +@@ -225,7 +223,6 @@ S maximumDistance_pointcloud( + /// @brief Compute the bounding volume extent and center for a set or subset of + /// points. The bounding volume axes are known. + template +-FCL_EXPORT + void getExtentAndCenter_pointcloud( + const Vector3* const ps, + const Vector3* const ps2, +@@ -290,7 +287,6 @@ void getExtentAndCenter_pointcloud( + /// @brief Compute the bounding volume extent and center for a set or subset of + /// points. The bounding volume axes are known. + template +-FCL_EXPORT + void getExtentAndCenter_mesh( + const Vector3* const ps, + const Vector3* const ps2, +@@ -409,7 +405,6 @@ void getExtentAndCenter_mesh( + + //============================================================================== + template +-FCL_EXPORT + void normalize(Vector3& v, bool* signal) + { + S sqr_length = v.squaredNorm(); +@@ -427,7 +422,6 @@ void normalize(Vector3& v, bool* signal) + + //============================================================================== + template +-FCL_EXPORT + typename Derived::RealScalar triple(const Eigen::MatrixBase& x, + const Eigen::MatrixBase& y, + const Eigen::MatrixBase& z) +@@ -437,7 +431,6 @@ typename Derived::RealScalar triple(const Eigen::MatrixBase& x, + + //============================================================================== + template +-FCL_EXPORT + VectorN combine( + const VectorN& v1, const VectorN& v2) + { +@@ -449,7 +442,6 @@ VectorN combine( + + //============================================================================== + template +-FCL_EXPORT + void hat(Matrix3& mat, const Vector3& vec) + { + mat << 0, -vec[2], vec[1], vec[2], 0, -vec[0], -vec[1], vec[0], 0; +@@ -457,7 +449,6 @@ void hat(Matrix3& mat, const Vector3& vec) + + //============================================================================== + template +-FCL_EXPORT + void eigen(const Matrix3& m, Vector3& dout, Matrix3& vout) + { + // We assume that m is symmetric matrix. +@@ -473,7 +464,6 @@ void eigen(const Matrix3& m, Vector3& dout, Matrix3& vout) + + //============================================================================== + template +-FCL_EXPORT + void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout) + { + Matrix3 R(m); +@@ -563,7 +553,6 @@ void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout) + + //============================================================================== + template +-FCL_EXPORT + void axisFromEigen(const Matrix3& eigenV, + const Vector3& eigenS, + Matrix3& axis) +@@ -603,7 +592,6 @@ void axisFromEigen(const Matrix3& eigenV, + + //============================================================================== + template +-FCL_EXPORT + void axisFromEigen(const Matrix3& eigenV, + const Vector3& eigenS, + Transform3& tf) +@@ -643,7 +631,6 @@ void axisFromEigen(const Matrix3& eigenV, + + //============================================================================== + template +-FCL_EXPORT + Matrix3 generateCoordinateSystem(const Vector3& x_axis) + { + Matrix3 axis; +@@ -655,7 +642,6 @@ Matrix3 generateCoordinateSystem(const Vector3& x_axis) + + //============================================================================== + template +-FCL_EXPORT + void relativeTransform( + const Eigen::MatrixBase& R1, const Eigen::MatrixBase& t1, + const Eigen::MatrixBase& R2, const Eigen::MatrixBase& t2, +@@ -687,7 +673,6 @@ void relativeTransform( + + //============================================================================== + template +-FCL_EXPORT + void relativeTransform( + const Transform3& T1, + const Transform3& T2, +@@ -709,7 +694,6 @@ void relativeTransform( + + //============================================================================== + template +-FCL_EXPORT + void getRadiusAndOriginAndRectangleSize( + const Vector3* const ps, + const Vector3* const ps2, +@@ -992,7 +976,6 @@ void getRadiusAndOriginAndRectangleSize( + + //============================================================================== + template +-FCL_EXPORT + void getRadiusAndOriginAndRectangleSize( + const Vector3* const ps, + const Vector3* const ps2, +@@ -1274,7 +1257,6 @@ void getRadiusAndOriginAndRectangleSize( + + //============================================================================== + template +-FCL_EXPORT + void circumCircleComputation( + const Vector3& a, + const Vector3& b, +@@ -1299,7 +1281,6 @@ void circumCircleComputation( + + //============================================================================== + template +-FCL_EXPORT + S maximumDistance( + const Vector3* const ps, + const Vector3* const ps2, +@@ -1316,7 +1297,6 @@ S maximumDistance( + + //============================================================================== + template +-FCL_EXPORT + void getExtentAndCenter( + const Vector3* const ps, + const Vector3* const ps2, +@@ -1335,7 +1315,6 @@ void getExtentAndCenter( + + //============================================================================== + template +-FCL_EXPORT + void getCovariance( + const Vector3* const ps, + const Vector3* const ps2, +diff --git a/include/fcl/math/geometry.h b/include/fcl/math/geometry.h +index 90c2a5a..58b1bf8 100644 +--- a/include/fcl/math/geometry.h ++++ b/include/fcl/math/geometry.h +@@ -49,44 +49,36 @@ + namespace fcl { + + template +-FCL_EXPORT + void normalize(Vector3& v, bool* signal); + + template +-FCL_EXPORT + typename Derived::RealScalar triple(const Eigen::MatrixBase& x, + const Eigen::MatrixBase& y, + const Eigen::MatrixBase& z); + + template +-FCL_EXPORT + VectorN combine( + const VectorN& v1, const VectorN& v2); + + template +-FCL_EXPORT + void hat(Matrix3& mat, const Vector3& vec); + + /// @brief compute the eigen vector and eigen vector of a matrix. dout is the + /// eigen values, vout is the eigen vectors + template +-FCL_EXPORT + void eigen(const Matrix3& m, Vector3& dout, Matrix3& vout); + + /// @brief compute the eigen vector and eigen vector of a matrix. dout is the + /// eigen values, vout is the eigen vectors + template +-FCL_EXPORT + void eigen_old(const Matrix3& m, Vector3& dout, Matrix3& vout); + + template +-FCL_EXPORT + void axisFromEigen(const Matrix3& eigenV, + const Vector3& eigenS, + Matrix3& axis); + + template +-FCL_EXPORT + void axisFromEigen(const Matrix3& eigenV, + const Vector3& eigenS, + Transform3& tf); +@@ -102,18 +94,15 @@ void axisFromEigen(const Matrix3& eigenV, + /// orthogonal to each other. Otherwise, the orientation of the y-axis + /// and z-axis to the x-axis is arbitrary. + template +-FCL_EXPORT + Matrix3 generateCoordinateSystem(const Vector3& x_axis); + + template +-FCL_EXPORT + void relativeTransform( + const Eigen::MatrixBase& R1, const Eigen::MatrixBase& t1, + const Eigen::MatrixBase& R2, const Eigen::MatrixBase& t2, + Eigen::MatrixBase& R, Eigen::MatrixBase& t); + + template +-FCL_EXPORT + void relativeTransform( + const Eigen::Transform& T1, + const Eigen::Transform& T2, +@@ -122,7 +111,6 @@ void relativeTransform( + /// @brief Compute the RSS bounding volume parameters: radius, rectangle size + /// and the origin, given the BV axises. + template +-FCL_EXPORT + void getRadiusAndOriginAndRectangleSize( + const Vector3* const ps, + const Vector3* const ps2, +@@ -137,7 +125,6 @@ void getRadiusAndOriginAndRectangleSize( + /// @brief Compute the RSS bounding volume parameters: radius, rectangle size + /// and the origin, given the BV axises. + template +-FCL_EXPORT + void getRadiusAndOriginAndRectangleSize( + const Vector3* const ps, + const Vector3* const ps2, +@@ -150,7 +137,6 @@ void getRadiusAndOriginAndRectangleSize( + + /// @brief Compute the center and radius for a triangle's circumcircle + template +-FCL_EXPORT + void circumCircleComputation( + const Vector3& a, + const Vector3& b, +@@ -160,7 +146,6 @@ void circumCircleComputation( + + /// @brief Compute the maximum distance from a given center point to a point cloud + template +-FCL_EXPORT + S maximumDistance( + const Vector3* const ps, + const Vector3* const ps2, +@@ -172,7 +157,6 @@ S maximumDistance( + /// @brief Compute the bounding volume extent and center for a set or subset of + /// points, given the BV axises. + template +-FCL_EXPORT + void getExtentAndCenter( + const Vector3* const ps, + const Vector3* const ps2, +@@ -186,7 +170,6 @@ void getExtentAndCenter( + /// @brief Compute the bounding volume extent and center for a set or subset of + /// points, given the BV axises. + template +-FCL_EXPORT + void getExtentAndCenter( + const Vector3* const ps, + const Vector3* const ps2, +@@ -200,7 +183,6 @@ void getExtentAndCenter( + /// ts = null, then indices refer to points directly; otherwise refer to + /// triangles + template +-FCL_EXPORT + void getCovariance( + const Vector3* const ps, + const Vector3* const ps2, +diff --git a/include/fcl/math/motion/bv_motion_bound_visitor.h b/include/fcl/math/motion/bv_motion_bound_visitor.h +index cecfe06..e60d3c2 100644 +--- a/include/fcl/math/motion/bv_motion_bound_visitor.h ++++ b/include/fcl/math/motion/bv_motion_bound_visitor.h +@@ -59,7 +59,7 @@ class TranslationMotion; + /// @brief Compute the motion bound for a bounding volume, given the closest + /// direction n between two query objects + template +-class FCL_EXPORT BVMotionBoundVisitor ++class BVMotionBoundVisitor + { + public: + virtual S visit(const MotionBase& motion) const = 0; +diff --git a/include/fcl/math/motion/interp_motion-inl.h b/include/fcl/math/motion/interp_motion-inl.h +index 384367a..f14a051 100644 +--- a/include/fcl/math/motion/interp_motion-inl.h ++++ b/include/fcl/math/motion/interp_motion-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT InterpMotion; ++class InterpMotion; + + //============================================================================== + template +diff --git a/include/fcl/math/motion/interp_motion.h b/include/fcl/math/motion/interp_motion.h +index a7f58eb..69cbd8e 100644 +--- a/include/fcl/math/motion/interp_motion.h ++++ b/include/fcl/math/motion/interp_motion.h +@@ -55,7 +55,7 @@ namespace fcl + /// T(0) = T0 + R0 p_ref - p_ref + /// T(1) = T1 + R1 p_ref - p_ref + template +-class FCL_EXPORT InterpMotion : public MotionBase ++class InterpMotion : public MotionBase + { + public: + /// @brief Default transformations are all identities +diff --git a/include/fcl/math/motion/motion_base-inl.h b/include/fcl/math/motion/motion_base-inl.h +index 280058f..eb36808 100644 +--- a/include/fcl/math/motion/motion_base-inl.h ++++ b/include/fcl/math/motion/motion_base-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT MotionBase; ++class MotionBase; + + //============================================================================== + template +diff --git a/include/fcl/math/motion/screw_motion-inl.h b/include/fcl/math/motion/screw_motion-inl.h +index 53c5c5b..ce5c7ae 100644 +--- a/include/fcl/math/motion/screw_motion-inl.h ++++ b/include/fcl/math/motion/screw_motion-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT ScrewMotion; ++class ScrewMotion; + + //============================================================================== + template +diff --git a/include/fcl/math/motion/screw_motion.h b/include/fcl/math/motion/screw_motion.h +index fce3387..0adb7fa 100644 +--- a/include/fcl/math/motion/screw_motion.h ++++ b/include/fcl/math/motion/screw_motion.h +@@ -49,7 +49,7 @@ namespace fcl + { + + template +-class FCL_EXPORT ScrewMotion : public MotionBase ++class ScrewMotion : public MotionBase + { + public: + /// @brief Default transformations are all identities +diff --git a/include/fcl/math/motion/spline_motion-inl.h b/include/fcl/math/motion/spline_motion-inl.h +index e3d992d..cd8fe0f 100644 +--- a/include/fcl/math/motion/spline_motion-inl.h ++++ b/include/fcl/math/motion/spline_motion-inl.h +@@ -47,7 +47,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SplineMotion; ++class SplineMotion; + + //============================================================================== + template +diff --git a/include/fcl/math/motion/spline_motion.h b/include/fcl/math/motion/spline_motion.h +index 96f2eba..a6082ac 100644 +--- a/include/fcl/math/motion/spline_motion.h ++++ b/include/fcl/math/motion/spline_motion.h +@@ -50,7 +50,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SplineMotion : public MotionBase ++class SplineMotion : public MotionBase + { + public: + /// @brief Construct motion from 4 deBoor points +diff --git a/include/fcl/math/motion/taylor_model/interval.h b/include/fcl/math/motion/taylor_model/interval.h +index cda1aa7..5aa2dc5 100644 +--- a/include/fcl/math/motion/taylor_model/interval.h ++++ b/include/fcl/math/motion/taylor_model/interval.h +@@ -47,7 +47,7 @@ namespace fcl + + /// @brief Interval class for [a, b] + template +-struct FCL_EXPORT Interval ++struct Interval + { + S i_[2]; + +@@ -125,11 +125,9 @@ struct FCL_EXPORT Interval + }; + + template +-FCL_EXPORT + Interval bound(const Interval& i, S v); + + template +-FCL_EXPORT + Interval bound(const Interval& i, const Interval& other); + + } // namespace fcl +diff --git a/include/fcl/math/motion/taylor_model/interval_matrix.h b/include/fcl/math/motion/taylor_model/interval_matrix.h +index eab03c2..3f16c3e 100644 +--- a/include/fcl/math/motion/taylor_model/interval_matrix.h ++++ b/include/fcl/math/motion/taylor_model/interval_matrix.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-struct FCL_EXPORT IMatrix3 ++struct IMatrix3 + { + IVector3 v_[3]; + +@@ -95,7 +95,6 @@ struct FCL_EXPORT IMatrix3 + }; + + template +-FCL_EXPORT + IMatrix3 rotationConstrain(const IMatrix3& m); + + } // namespace fcl +diff --git a/include/fcl/math/motion/taylor_model/interval_vector.h b/include/fcl/math/motion/taylor_model/interval_vector.h +index d5e5a94..c59e81a 100644 +--- a/include/fcl/math/motion/taylor_model/interval_vector.h ++++ b/include/fcl/math/motion/taylor_model/interval_vector.h +@@ -44,7 +44,7 @@ namespace fcl + { + + template +-struct FCL_EXPORT IVector3 ++struct IVector3 + { + Interval i_[3]; + +@@ -106,11 +106,9 @@ struct FCL_EXPORT IVector3 + }; + + template +-FCL_EXPORT + IVector3 bound(const IVector3& i, const Vector3& v); + + template +-FCL_EXPORT + IVector3 bound(const IVector3& i, const IVector3& v); + + } // namespace fcl +diff --git a/include/fcl/math/motion/taylor_model/taylor_matrix-inl.h b/include/fcl/math/motion/taylor_model/taylor_matrix-inl.h +index f5b1843..52b5a80 100644 +--- a/include/fcl/math/motion/taylor_model/taylor_matrix-inl.h ++++ b/include/fcl/math/motion/taylor_model/taylor_matrix-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT TMatrix3; ++class TMatrix3; + + //============================================================================== + extern template +diff --git a/include/fcl/math/motion/taylor_model/taylor_matrix.h b/include/fcl/math/motion/taylor_model/taylor_matrix.h +index c26f533..2c4a111 100644 +--- a/include/fcl/math/motion/taylor_model/taylor_matrix.h ++++ b/include/fcl/math/motion/taylor_model/taylor_matrix.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT TMatrix3 ++class TMatrix3 + { + TVector3 v_[3]; + +@@ -106,31 +106,24 @@ public: + }; + + template +-FCL_EXPORT + TMatrix3 rotationConstrain(const TMatrix3& m); + + template +-FCL_EXPORT + TMatrix3 operator * (const Matrix3& m, const TaylorModel& a); + + template +-FCL_EXPORT + TMatrix3 operator * (const TaylorModel& a, const Matrix3& m); + + template +-FCL_EXPORT + TMatrix3 operator * (const TaylorModel& a, const TMatrix3& m); + + template +-FCL_EXPORT + TMatrix3 operator * (S d, const TMatrix3& m); + + template +-FCL_EXPORT + TMatrix3 operator + (const Matrix3& m1, const TMatrix3& m2); + + template +-FCL_EXPORT + TMatrix3 operator - (const Matrix3& m1, const TMatrix3& m2); + + } // namespace fcl +diff --git a/include/fcl/math/motion/taylor_model/taylor_model-inl.h b/include/fcl/math/motion/taylor_model/taylor_model-inl.h +index 861f72d..2ebb086 100644 +--- a/include/fcl/math/motion/taylor_model/taylor_model-inl.h ++++ b/include/fcl/math/motion/taylor_model/taylor_model-inl.h +@@ -48,7 +48,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT TaylorModel; ++class TaylorModel; + + //============================================================================== + extern template +diff --git a/include/fcl/math/motion/taylor_model/taylor_model.h b/include/fcl/math/motion/taylor_model/taylor_model.h +index b8c1999..e80561f 100644 +--- a/include/fcl/math/motion/taylor_model/taylor_model.h ++++ b/include/fcl/math/motion/taylor_model/taylor_model.h +@@ -55,7 +55,7 @@ namespace fcl + /// remainder. All the operations on two Taylor models assume their time + /// intervals are the same. + template +-class FCL_EXPORT TaylorModel ++class TaylorModel + { + /// @brief time interval + std::shared_ptr> time_interval_; +@@ -118,30 +118,24 @@ public: + }; + + template +-FCL_EXPORT + TaylorModel operator * (S d, const TaylorModel& a); + + template +-FCL_EXPORT + TaylorModel operator + (S d, const TaylorModel& a); + + template +-FCL_EXPORT + TaylorModel operator - (S d, const TaylorModel& a); + + /// @brief Generate Taylor model for cos(w t + q0) + template +-FCL_EXPORT + void generateTaylorModelForCosFunc(TaylorModel& tm, S w, S q0); + + /// @brief Generate Taylor model for sin(w t + q0) + template +-FCL_EXPORT + void generateTaylorModelForSinFunc(TaylorModel& tm, S w, S q0); + + /// @brief Generate Taylor model for p + v t + template +-FCL_EXPORT + void generateTaylorModelForLinearFunc(TaylorModel& tm, S p, S v); + + } // namespace fcl +diff --git a/include/fcl/math/motion/taylor_model/taylor_vector-inl.h b/include/fcl/math/motion/taylor_model/taylor_vector-inl.h +index 1ce2b36..516f7b5 100644 +--- a/include/fcl/math/motion/taylor_model/taylor_vector-inl.h ++++ b/include/fcl/math/motion/taylor_model/taylor_vector-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT TVector3; ++class TVector3; + + //============================================================================== + extern template +diff --git a/include/fcl/math/motion/taylor_model/taylor_vector.h b/include/fcl/math/motion/taylor_model/taylor_vector.h +index 7df662f..884a3ca 100644 +--- a/include/fcl/math/motion/taylor_model/taylor_vector.h ++++ b/include/fcl/math/motion/taylor_model/taylor_vector.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT TVector3 ++class TVector3 + { + TaylorModel i_[3]; + +@@ -104,19 +104,15 @@ public: + }; + + template +-FCL_EXPORT + void generateTVector3ForLinearFunc(TVector3& v, const Vector3& position, const Vector3& velocity); + + template +-FCL_EXPORT + TVector3 operator * (const Vector3& v, const TaylorModel& a); + + template +-FCL_EXPORT + TVector3 operator + (const Vector3& v1, const TVector3& v2); + + template +-FCL_EXPORT + TVector3 operator - (const Vector3& v1, const TVector3& v2); + + } // namespace fcl +diff --git a/include/fcl/math/motion/taylor_model/time_interval.h b/include/fcl/math/motion/taylor_model/time_interval.h +index 1320d9c..49c686a 100644 +--- a/include/fcl/math/motion/taylor_model/time_interval.h ++++ b/include/fcl/math/motion/taylor_model/time_interval.h +@@ -47,7 +47,7 @@ namespace fcl + { + + template +-struct FCL_EXPORT TimeInterval ++struct TimeInterval + { + /// @brief time Interval and different powers + Interval t_; // [t1, t2] +diff --git a/include/fcl/math/motion/tbv_motion_bound_visitor.h b/include/fcl/math/motion/tbv_motion_bound_visitor.h +index 515fef8..05c947c 100644 +--- a/include/fcl/math/motion/tbv_motion_bound_visitor.h ++++ b/include/fcl/math/motion/tbv_motion_bound_visitor.h +@@ -62,7 +62,7 @@ template + class TranslationMotion; + + template +-class FCL_EXPORT TBVMotionBoundVisitor : public BVMotionBoundVisitor ++class TBVMotionBoundVisitor : public BVMotionBoundVisitor + { + public: + using S = typename BV::S; +diff --git a/include/fcl/math/motion/translation_motion-inl.h b/include/fcl/math/motion/translation_motion-inl.h +index a2aaf6c..7feffd1 100644 +--- a/include/fcl/math/motion/translation_motion-inl.h ++++ b/include/fcl/math/motion/translation_motion-inl.h +@@ -47,7 +47,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT TranslationMotion; ++class TranslationMotion; + + //============================================================================== + template +diff --git a/include/fcl/math/motion/translation_motion.h b/include/fcl/math/motion/translation_motion.h +index 37b77b4..ff2a1ff 100644 +--- a/include/fcl/math/motion/translation_motion.h ++++ b/include/fcl/math/motion/translation_motion.h +@@ -46,7 +46,7 @@ namespace fcl + { + + template +-class FCL_EXPORT TranslationMotion : public MotionBase ++class TranslationMotion : public MotionBase + { + public: + /// @brief Construct motion from intial and goal transform +diff --git a/include/fcl/math/motion/triangle_motion_bound_visitor-inl.h b/include/fcl/math/motion/triangle_motion_bound_visitor-inl.h +index 59f37cb..2f7dd34 100644 +--- a/include/fcl/math/motion/triangle_motion_bound_visitor-inl.h ++++ b/include/fcl/math/motion/triangle_motion_bound_visitor-inl.h +@@ -51,7 +51,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT TriangleMotionBoundVisitor; ++class TriangleMotionBoundVisitor; + + //============================================================================== + template +diff --git a/include/fcl/math/motion/triangle_motion_bound_visitor.h b/include/fcl/math/motion/triangle_motion_bound_visitor.h +index e6a3b7d..c37a206 100644 +--- a/include/fcl/math/motion/triangle_motion_bound_visitor.h ++++ b/include/fcl/math/motion/triangle_motion_bound_visitor.h +@@ -71,7 +71,7 @@ template + struct TriangleMotionBoundVisitorVisitImpl; + + template +-class FCL_EXPORT TriangleMotionBoundVisitor ++class TriangleMotionBoundVisitor + { + public: + TriangleMotionBoundVisitor( +diff --git a/include/fcl/math/rng-inl.h b/include/fcl/math/rng-inl.h +index 8877c48..10b9ed8 100644 +--- a/include/fcl/math/rng-inl.h ++++ b/include/fcl/math/rng-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT RNG; ++class RNG; + + //============================================================================== + template +diff --git a/include/fcl/math/rng.h b/include/fcl/math/rng.h +index 782cf48..827c0ea 100644 +--- a/include/fcl/math/rng.h ++++ b/include/fcl/math/rng.h +@@ -55,7 +55,7 @@ namespace fcl + /// threads. It is also guaranteed that all created instances will + /// have a different random seed. + template +-class FCL_EXPORT RNG ++class RNG + { + public: + /// @brief Constructor. Always sets a different random seed +diff --git a/include/fcl/math/sampler/sampler_base.h b/include/fcl/math/sampler/sampler_base.h +index d49d8c9..30bd153 100644 +--- a/include/fcl/math/sampler/sampler_base.h ++++ b/include/fcl/math/sampler/sampler_base.h +@@ -44,7 +44,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerBase ++class SamplerBase + { + public: + mutable RNG rng; +diff --git a/include/fcl/math/sampler/sampler_r.h b/include/fcl/math/sampler/sampler_r.h +index 9b19776..44eed46 100644 +--- a/include/fcl/math/sampler/sampler_r.h ++++ b/include/fcl/math/sampler/sampler_r.h +@@ -46,7 +46,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerR : public SamplerBase ++class SamplerR : public SamplerBase + { + public: + SamplerR(); +diff --git a/include/fcl/math/sampler/sampler_se2-inl.h b/include/fcl/math/sampler/sampler_se2-inl.h +index aa3cb9a..27d6471 100644 +--- a/include/fcl/math/sampler/sampler_se2-inl.h ++++ b/include/fcl/math/sampler/sampler_se2-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SamplerSE2; ++class SamplerSE2; + + //============================================================================== + template +diff --git a/include/fcl/math/sampler/sampler_se2.h b/include/fcl/math/sampler/sampler_se2.h +index ff321e7..be626a5 100644 +--- a/include/fcl/math/sampler/sampler_se2.h ++++ b/include/fcl/math/sampler/sampler_se2.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerSE2 : public SamplerBase ++class SamplerSE2 : public SamplerBase + { + public: + SamplerSE2(); +diff --git a/include/fcl/math/sampler/sampler_se2_disk-inl.h b/include/fcl/math/sampler/sampler_se2_disk-inl.h +index 64aa256..d074c77 100644 +--- a/include/fcl/math/sampler/sampler_se2_disk-inl.h ++++ b/include/fcl/math/sampler/sampler_se2_disk-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SamplerSE2_disk; ++class SamplerSE2_disk; + + //============================================================================== + template +diff --git a/include/fcl/math/sampler/sampler_se2_disk.h b/include/fcl/math/sampler/sampler_se2_disk.h +index 154110b..eed432d 100644 +--- a/include/fcl/math/sampler/sampler_se2_disk.h ++++ b/include/fcl/math/sampler/sampler_se2_disk.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerSE2_disk : public SamplerBase ++class SamplerSE2_disk : public SamplerBase + { + public: + SamplerSE2_disk(); +diff --git a/include/fcl/math/sampler/sampler_se3_euler-inl.h b/include/fcl/math/sampler/sampler_se3_euler-inl.h +index 14ff1b8..98d5b91 100644 +--- a/include/fcl/math/sampler/sampler_se3_euler-inl.h ++++ b/include/fcl/math/sampler/sampler_se3_euler-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SamplerSE3Euler; ++class SamplerSE3Euler; + + //============================================================================== + template +diff --git a/include/fcl/math/sampler/sampler_se3_euler.h b/include/fcl/math/sampler/sampler_se3_euler.h +index 487e22a..5ec8d92 100644 +--- a/include/fcl/math/sampler/sampler_se3_euler.h ++++ b/include/fcl/math/sampler/sampler_se3_euler.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerSE3Euler : public SamplerBase ++class SamplerSE3Euler : public SamplerBase + { + public: + SamplerSE3Euler(); +diff --git a/include/fcl/math/sampler/sampler_se3_euler_ball-inl.h b/include/fcl/math/sampler/sampler_se3_euler_ball-inl.h +index 48dc6d9..3a940c2 100644 +--- a/include/fcl/math/sampler/sampler_se3_euler_ball-inl.h ++++ b/include/fcl/math/sampler/sampler_se3_euler_ball-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SamplerSE3Euler_ball; ++class SamplerSE3Euler_ball; + + //============================================================================== + template +diff --git a/include/fcl/math/sampler/sampler_se3_euler_ball.h b/include/fcl/math/sampler/sampler_se3_euler_ball.h +index 616e0b7..137d766 100644 +--- a/include/fcl/math/sampler/sampler_se3_euler_ball.h ++++ b/include/fcl/math/sampler/sampler_se3_euler_ball.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerSE3Euler_ball : public SamplerBase ++class SamplerSE3Euler_ball : public SamplerBase + { + public: + SamplerSE3Euler_ball(); +diff --git a/include/fcl/math/sampler/sampler_se3_quat-inl.h b/include/fcl/math/sampler/sampler_se3_quat-inl.h +index ed961ab..725e27e 100644 +--- a/include/fcl/math/sampler/sampler_se3_quat-inl.h ++++ b/include/fcl/math/sampler/sampler_se3_quat-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SamplerSE3Quat; ++class SamplerSE3Quat; + + //============================================================================== + template +diff --git a/include/fcl/math/sampler/sampler_se3_quat.h b/include/fcl/math/sampler/sampler_se3_quat.h +index 3c2ae98..0f0a9b4 100644 +--- a/include/fcl/math/sampler/sampler_se3_quat.h ++++ b/include/fcl/math/sampler/sampler_se3_quat.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerSE3Quat : public SamplerBase ++class SamplerSE3Quat : public SamplerBase + { + public: + SamplerSE3Quat(); +diff --git a/include/fcl/math/sampler/sampler_se3_quat_ball-inl.h b/include/fcl/math/sampler/sampler_se3_quat_ball-inl.h +index 6a13b91..92f79be 100644 +--- a/include/fcl/math/sampler/sampler_se3_quat_ball-inl.h ++++ b/include/fcl/math/sampler/sampler_se3_quat_ball-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT SamplerSE3Quat_ball; ++class SamplerSE3Quat_ball; + + //============================================================================== + template +diff --git a/include/fcl/math/sampler/sampler_se3_quat_ball.h b/include/fcl/math/sampler/sampler_se3_quat_ball.h +index 9fef44c..42a527d 100644 +--- a/include/fcl/math/sampler/sampler_se3_quat_ball.h ++++ b/include/fcl/math/sampler/sampler_se3_quat_ball.h +@@ -45,7 +45,7 @@ namespace fcl + { + + template +-class FCL_EXPORT SamplerSE3Quat_ball : public SamplerBase ++class SamplerSE3Quat_ball : public SamplerBase + { + public: + SamplerSE3Quat_ball(); +diff --git a/include/fcl/math/variance3-inl.h b/include/fcl/math/variance3-inl.h +index dea5340..b39c6f4 100644 +--- a/include/fcl/math/variance3-inl.h ++++ b/include/fcl/math/variance3-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT Variance3; ++class Variance3; + + //============================================================================== + template +diff --git a/include/fcl/math/variance3.h b/include/fcl/math/variance3.h +index b593820..0bdb905 100644 +--- a/include/fcl/math/variance3.h ++++ b/include/fcl/math/variance3.h +@@ -48,7 +48,7 @@ namespace fcl + + /// @brief Class for variance matrix in 3d + template +-class FCL_EXPORT Variance3 ++class Variance3 + { + public: + /// @brief Variation matrix +diff --git a/include/fcl/narrowphase/collision-inl.h b/include/fcl/narrowphase/collision-inl.h +index 69f4c2c..15dcc10 100644 +--- a/include/fcl/narrowphase/collision-inl.h ++++ b/include/fcl/narrowphase/collision-inl.h +@@ -77,7 +77,6 @@ detail::CollisionFunctionMatrix& getCollisionFunctionLookTable() + + //============================================================================== + template +-FCL_EXPORT + std::size_t collide( + const CollisionObject* o1, + const CollisionObject* o2, +@@ -91,7 +90,6 @@ std::size_t collide( + + //============================================================================== + template +-FCL_EXPORT + std::size_t collide( + const CollisionGeometry* o1, + const Transform3& tf1, +@@ -150,7 +148,6 @@ std::size_t collide( + + //============================================================================== + template +-FCL_EXPORT + std::size_t collide(const CollisionObject* o1, const CollisionObject* o2, + const CollisionRequest& request, CollisionResult& result) + { +@@ -176,7 +173,6 @@ std::size_t collide(const CollisionObject* o1, const CollisionObject* o2, + + //============================================================================== + template +-FCL_EXPORT + std::size_t collide( + const CollisionGeometry* o1, + const Transform3& tf1, +diff --git a/include/fcl/narrowphase/collision.h b/include/fcl/narrowphase/collision.h +index f6e361e..960e624 100644 +--- a/include/fcl/narrowphase/collision.h ++++ b/include/fcl/narrowphase/collision.h +@@ -53,13 +53,11 @@ namespace fcl + /// performs the collision between them. Return value is the number of contacts + /// generated between the two objects. + template +-FCL_EXPORT + std::size_t collide(const CollisionObject* o1, const CollisionObject* o2, + const CollisionRequest& request, + CollisionResult& result); + + template +-FCL_EXPORT + std::size_t collide(const CollisionGeometry* o1, const Transform3& tf1, + const CollisionGeometry* o2, const Transform3& tf2, + const CollisionRequest& request, +diff --git a/include/fcl/narrowphase/collision_object-inl.h b/include/fcl/narrowphase/collision_object-inl.h +index 0c50e52..2f5f481 100644 +--- a/include/fcl/narrowphase/collision_object-inl.h ++++ b/include/fcl/narrowphase/collision_object-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT CollisionObject; ++class CollisionObject; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/collision_object.h b/include/fcl/narrowphase/collision_object.h +index bef211a..120bcbc 100644 +--- a/include/fcl/narrowphase/collision_object.h ++++ b/include/fcl/narrowphase/collision_object.h +@@ -48,7 +48,7 @@ namespace fcl + /// @brief the object for collision or distance computation, contains the + /// geometry and the transform information + template +-class FCL_EXPORT CollisionObject ++class CollisionObject + { + public: + CollisionObject(const std::shared_ptr>& cgeom); +diff --git a/include/fcl/narrowphase/collision_request.h b/include/fcl/narrowphase/collision_request.h +index 3341714..b1604f4 100644 +--- a/include/fcl/narrowphase/collision_request.h ++++ b/include/fcl/narrowphase/collision_request.h +@@ -49,7 +49,7 @@ struct CollisionResult; + + /// @brief Parameters for performing collision request. + template +-struct FCL_EXPORT CollisionRequest ++struct CollisionRequest + { + /// The underlying numerical representation of the request's scalar (e.g., + /// float or double). +diff --git a/include/fcl/narrowphase/collision_result.h b/include/fcl/narrowphase/collision_result.h +index a0d3677..8ce60cf 100644 +--- a/include/fcl/narrowphase/collision_result.h ++++ b/include/fcl/narrowphase/collision_result.h +@@ -49,7 +49,7 @@ namespace fcl + + /// @brief collision result + template +-struct FCL_EXPORT CollisionResult ++struct CollisionResult + { + private: + /// @brief contact information +diff --git a/include/fcl/narrowphase/contact.h b/include/fcl/narrowphase/contact.h +index eaa9b2f..343a443 100644 +--- a/include/fcl/narrowphase/contact.h ++++ b/include/fcl/narrowphase/contact.h +@@ -45,7 +45,7 @@ namespace fcl + + /// @brief Contact information returned by collision + template +-struct FCL_EXPORT Contact ++struct Contact + { + /// @brief collision object 1 + const CollisionGeometry* o1; +diff --git a/include/fcl/narrowphase/contact_point.h b/include/fcl/narrowphase/contact_point.h +index bca98e6..c917d69 100644 +--- a/include/fcl/narrowphase/contact_point.h ++++ b/include/fcl/narrowphase/contact_point.h +@@ -45,7 +45,7 @@ namespace fcl + + /// @brief Minimal contact information returned by collision + template +-struct FCL_EXPORT ContactPoint ++struct ContactPoint + { + /// @brief Contact normal, pointing from o1 to o2 + Vector3 normal; +@@ -68,12 +68,10 @@ using ContactPointd = ContactPoint; + + /// @brief Return true if _cp1's penentration depth is less than _cp2's. + template +-FCL_EXPORT + bool comparePenDepth( + const ContactPoint& _cp1, const ContactPoint& _cp2); + + template +-FCL_EXPORT + void flipNormal(std::vector>& contacts); + + } // namespace fcl +diff --git a/include/fcl/narrowphase/continuous_collision-inl.h b/include/fcl/narrowphase/continuous_collision-inl.h +index b24d0b8..9371f19 100644 +--- a/include/fcl/narrowphase/continuous_collision-inl.h ++++ b/include/fcl/narrowphase/continuous_collision-inl.h +@@ -105,7 +105,6 @@ getConservativeAdvancementFunctionLookTable() + + //============================================================================== + template +-FCL_EXPORT + MotionBasePtr getMotionBase( + const Transform3& tf_beg, + const Transform3& tf_end, +@@ -132,7 +131,6 @@ MotionBasePtr getMotionBase( + + //============================================================================== + template +-FCL_EXPORT + S continuousCollideNaive( + const CollisionGeometry* o1, + const MotionBase* motion1, +@@ -175,7 +173,6 @@ namespace detail + + //============================================================================== + template +-FCL_EXPORT + typename BV::S continuousCollideBVHPolynomial( + const CollisionGeometry* o1_, + const TranslationMotion* motion1, +@@ -244,7 +241,6 @@ typename BV::S continuousCollideBVHPolynomial( + + //============================================================================== + template +-FCL_EXPORT + S continuousCollideBVHPolynomial( + const CollisionGeometry* o1, + const TranslationMotion* motion1, +@@ -301,7 +297,6 @@ namespace detail + + //============================================================================== + template +-FCL_EXPORT + typename NarrowPhaseSolver::S continuousCollideConservativeAdvancement( + const CollisionGeometry* o1, + const MotionBase* motion1, +@@ -355,7 +350,6 @@ typename NarrowPhaseSolver::S continuousCollideConservativeAdvancement( + } // namespace detail + + template +-FCL_EXPORT + S continuousCollideConservativeAdvancement( + const CollisionGeometry* o1, + const MotionBase* motion1, +@@ -383,7 +377,6 @@ S continuousCollideConservativeAdvancement( + + //============================================================================== + template +-FCL_EXPORT + S continuousCollide( + const CollisionGeometry* o1, + const MotionBase* motion1, +@@ -433,7 +426,6 @@ S continuousCollide( + + //============================================================================== + template +-FCL_EXPORT + S continuousCollide( + const CollisionGeometry* o1, + const Transform3& tf1_beg, +@@ -452,7 +444,6 @@ S continuousCollide( + + //============================================================================== + template +-FCL_EXPORT + S continuousCollide( + const CollisionObject* o1, + const Transform3& tf1_end, +@@ -468,7 +459,6 @@ S continuousCollide( + + //============================================================================== + template +-FCL_EXPORT + S collide( + const ContinuousCollisionObject* o1, + const ContinuousCollisionObject* o2, +diff --git a/include/fcl/narrowphase/continuous_collision.h b/include/fcl/narrowphase/continuous_collision.h +index fb1cab6..fe02b38 100644 +--- a/include/fcl/narrowphase/continuous_collision.h ++++ b/include/fcl/narrowphase/continuous_collision.h +@@ -51,7 +51,6 @@ namespace fcl + + /// @brief continous collision checking between two objects + template +-FCL_EXPORT + S continuousCollide( + const CollisionGeometry* o1, + const MotionBase* motion1, +@@ -61,7 +60,6 @@ S continuousCollide( + ContinuousCollisionResult& result); + + template +-FCL_EXPORT + S continuousCollide( + const CollisionGeometry* o1, + const Transform3& tf1_beg, +@@ -73,7 +71,6 @@ S continuousCollide( + ContinuousCollisionResult& result); + + template +-FCL_EXPORT + S continuousCollide( + const CollisionObject* o1, + const Transform3& tf1_end, +@@ -83,7 +80,6 @@ S continuousCollide( + ContinuousCollisionResult& result); + + template +-FCL_EXPORT + S collide( + const ContinuousCollisionObject* o1, + const ContinuousCollisionObject* o2, +diff --git a/include/fcl/narrowphase/continuous_collision_object-inl.h b/include/fcl/narrowphase/continuous_collision_object-inl.h +index e8008e9..b641a6c 100644 +--- a/include/fcl/narrowphase/continuous_collision_object-inl.h ++++ b/include/fcl/narrowphase/continuous_collision_object-inl.h +@@ -45,7 +45,7 @@ namespace fcl + + //============================================================================== + extern template +-class FCL_EXPORT ContinuousCollisionObject; ++class ContinuousCollisionObject; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/continuous_collision_object.h b/include/fcl/narrowphase/continuous_collision_object.h +index ecb12c4..60b8741 100644 +--- a/include/fcl/narrowphase/continuous_collision_object.h ++++ b/include/fcl/narrowphase/continuous_collision_object.h +@@ -48,7 +48,7 @@ namespace fcl + /// @brief the object for continuous collision or distance computation, contains + /// the geometry and the motion information + template +-class FCL_EXPORT ContinuousCollisionObject ++class ContinuousCollisionObject + { + public: + ContinuousCollisionObject( +diff --git a/include/fcl/narrowphase/continuous_collision_request.h b/include/fcl/narrowphase/continuous_collision_request.h +index 356be14..518b095 100644 +--- a/include/fcl/narrowphase/continuous_collision_request.h ++++ b/include/fcl/narrowphase/continuous_collision_request.h +@@ -49,7 +49,7 @@ enum CCDMotionType {CCDM_TRANS, CCDM_LINEAR, CCDM_SCREW, CCDM_SPLINE}; + enum CCDSolverType {CCDC_NAIVE, CCDC_CONSERVATIVE_ADVANCEMENT, CCDC_RAY_SHOOTING, CCDC_POLYNOMIAL_SOLVER}; + + template +-struct FCL_EXPORT ContinuousCollisionRequest ++struct ContinuousCollisionRequest + { + /// @brief maximum num of iterations + std::size_t num_max_iterations; +diff --git a/include/fcl/narrowphase/continuous_collision_result.h b/include/fcl/narrowphase/continuous_collision_result.h +index e19bf69..8e5f833 100644 +--- a/include/fcl/narrowphase/continuous_collision_result.h ++++ b/include/fcl/narrowphase/continuous_collision_result.h +@@ -45,7 +45,7 @@ namespace fcl + + /// @brief continuous collision result + template +-struct FCL_EXPORT ContinuousCollisionResult ++struct ContinuousCollisionResult + { + /// @brief collision or not + bool is_collide; +diff --git a/include/fcl/narrowphase/cost_source.h b/include/fcl/narrowphase/cost_source.h +index 15bc111..66f072a 100644 +--- a/include/fcl/narrowphase/cost_source.h ++++ b/include/fcl/narrowphase/cost_source.h +@@ -46,7 +46,7 @@ namespace fcl + + /// @brief Cost source describes an area with a cost. The area is described by an AABB region. + template +-struct FCL_EXPORT CostSource ++struct CostSource + { + /// @brief aabb lower bound + Vector3 aabb_min; +diff --git a/include/fcl/narrowphase/detail/convexity_based_algorithm/epa.h b/include/fcl/narrowphase/detail/convexity_based_algorithm/epa.h +index eb7efa4..131dc7a 100644 +--- a/include/fcl/narrowphase/detail/convexity_based_algorithm/epa.h ++++ b/include/fcl/narrowphase/detail/convexity_based_algorithm/epa.h +@@ -54,7 +54,7 @@ namespace detail + + /// @brief class for EPA algorithm + template +-struct FCL_EXPORT EPA ++struct EPA + { + private: + using SimplexV = typename GJK::SimplexV; +diff --git a/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk.h b/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk.h +index f5bbc21..7949bba 100644 +--- a/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk.h ++++ b/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief class for GJK algorithm + template +-struct FCL_EXPORT GJK ++struct GJK + { + struct SimplexV + { +diff --git a/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd-inl.h b/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd-inl.h +index 60fd0ad..f6e9a3b 100644 +--- a/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd-inl.h ++++ b/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd-inl.h +@@ -56,31 +56,31 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +-class FCL_EXPORT GJKInitializer>; ++class GJKInitializer>; + + //============================================================================== + extern template +diff --git a/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd.h b/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd.h +index c222748..3bcecd3 100644 +--- a/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd.h ++++ b/include/fcl/narrowphase/detail/convexity_based_algorithm/gjk_libccd.h +@@ -73,7 +73,7 @@ using GJKCenterFunction = void (*)(const void* obj, ccd_vec3_t* c); + + /// @brief initialize GJK stuffs + template +-class FCL_EXPORT GJKInitializer ++class GJKInitializer + { + public: + /// @brief Get GJK support function +@@ -93,7 +93,7 @@ public: + + /// @brief initialize GJK Cylinder + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -104,7 +104,7 @@ public: + + /// @brief initialize GJK Sphere + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -115,7 +115,7 @@ public: + + /// @brief initialize GJK Ellipsoid + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -126,7 +126,7 @@ public: + + /// @brief initialize GJK Box + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -137,7 +137,7 @@ public: + + /// @brief initialize GJK Capsule + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -148,7 +148,7 @@ public: + + /// @brief initialize GJK Cone + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -159,7 +159,7 @@ public: + + /// @brief initialize GJK Convex + template +-class FCL_EXPORT GJKInitializer> ++class GJKInitializer> + { + public: + static GJKSupportFunction getSupportFunction(); +@@ -176,11 +176,9 @@ FCL_EXPORT + GJKCenterFunction triGetCenterFunction(); + + template +-FCL_EXPORT + void* triCreateGJKObject(const Vector3& P1, const Vector3& P2, const Vector3& P3); + + template +-FCL_EXPORT + void* triCreateGJKObject(const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf); + + FCL_EXPORT +@@ -188,7 +186,6 @@ void triDeleteGJKObject(void* o); + + /// @brief GJK collision algorithm + template +-FCL_EXPORT + bool GJKCollide( + void* obj1, + ccd_support_fn supp1, +@@ -221,7 +218,6 @@ bool GJKCollide( + * @retval is_separated True if the objects are separated, false otherwise. + */ + template +-FCL_EXPORT + bool GJKDistance(void* obj1, ccd_support_fn supp1, + void* obj2, ccd_support_fn supp2, + unsigned int max_iterations, S tolerance, +@@ -247,7 +243,6 @@ bool GJKDistance(void* obj1, ccd_support_fn supp1, + * @retval is_separated True if the objects are separated, false otherwise. + */ + template +-FCL_EXPORT + bool GJKSignedDistance(void* obj1, ccd_support_fn supp1, + void* obj2, ccd_support_fn supp2, + unsigned int max_iterations, S tolerance, +diff --git a/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff-inl.h b/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff-inl.h +index 9f1309e..02d5643 100644 +--- a/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff-inl.h ++++ b/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff-inl.h +@@ -63,7 +63,6 @@ struct MinkowskiDiff; + + //============================================================================== + template +-FCL_EXPORT + Vector3 getSupport( + const ShapeBase* shape, + const Eigen::MatrixBase& dir) +diff --git a/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff.h b/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff.h +index a1ee9c7..6e073ac 100644 +--- a/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff.h ++++ b/include/fcl/narrowphase/detail/convexity_based_algorithm/minkowski_diff.h +@@ -55,7 +55,7 @@ Vector3 getSupport( + + /// @brief Minkowski difference class of two shapes + template +-struct FCL_EXPORT MinkowskiDiff ++struct MinkowskiDiff + { + /// @brief points to two shapes + const ShapeBase* shapes[2]; +diff --git a/include/fcl/narrowphase/detail/gjk_solver_indep.h b/include/fcl/narrowphase/detail/gjk_solver_indep.h +index 44ed514..666e9c9 100755 +--- a/include/fcl/narrowphase/detail/gjk_solver_indep.h ++++ b/include/fcl/narrowphase/detail/gjk_solver_indep.h +@@ -51,7 +51,7 @@ namespace detail + + /// @brief collision and distance solver based on GJK algorithm implemented in fcl (rewritten the code from the GJK in bullet) + template +-struct FCL_EXPORT GJKSolver_indep ++struct GJKSolver_indep + { + using S = S_; + +diff --git a/include/fcl/narrowphase/detail/gjk_solver_libccd.h b/include/fcl/narrowphase/detail/gjk_solver_libccd.h +index 218a894..1b6b2c3 100755 +--- a/include/fcl/narrowphase/detail/gjk_solver_libccd.h ++++ b/include/fcl/narrowphase/detail/gjk_solver_libccd.h +@@ -51,7 +51,7 @@ namespace detail + + /// @brief collision and distance solver based on libccd library. + template +-struct FCL_EXPORT GJKSolver_libccd ++struct GJKSolver_libccd + { + using S = S_; + +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/box_box.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/box_box.h +index 87a6084..d7be734 100755 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/box_box.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/box_box.h +@@ -49,7 +49,6 @@ namespace detail + { + + template +-FCL_EXPORT + void lineClosestApproach(const Vector3& pa, const Vector3& ua, + const Vector3& pb, const Vector3& ub, + S* alpha, S* beta); +@@ -62,7 +61,6 @@ void lineClosestApproach(const Vector3& pa, const Vector3& ua, + // the number of intersection points is returned by the function (this will + // be in the range 0 to 8). + template +-FCL_EXPORT + int intersectRectQuad2(S h[2], S p[8], S ret[16]); + + // given n points in the plane (array p, of size 2*n), generate m points that +@@ -73,11 +71,9 @@ int intersectRectQuad2(S h[2], S p[8], S ret[16]); + // n must be in the range [1..8]. m must be in the range [1..n]. i0 must be + // in the range [0..n-1]. + template +-FCL_EXPORT + void cullPoints2(int n, S p[], int m, int i0, int iret[]); + + template +-FCL_EXPORT + int boxBox2( + const Vector3& side1, + const Eigen::MatrixBase& R1, +@@ -92,7 +88,6 @@ int boxBox2( + std::vector>& contacts); + + template +-FCL_EXPORT + int boxBox2( + const Vector3& side1, + const Transform3& tf1, +@@ -105,7 +100,6 @@ int boxBox2( + std::vector>& contacts); + + template +-FCL_EXPORT + bool boxBoxIntersect(const Box& s1, const Transform3& tf1, + const Box& s2, const Transform3& tf2, + std::vector>* contacts_); +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.h +index c391736..34245a6 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.h +@@ -49,7 +49,6 @@ namespace detail + + // Clamp n to lie within the range [min, max] + template +-FCL_EXPORT + S clamp(S n, S min, S max); + + /** Computes the pair of closest points `(p_FC1, p_FC2)` between two line +@@ -73,7 +72,7 @@ S clamp(S n, S min, S max); + @tparam S The scalar type for computation. + */ + template +-FCL_EXPORT S closestPtSegmentSegment(const Vector3& p_FP1, ++S closestPtSegmentSegment(const Vector3& p_FP1, + const Vector3& p_FQ1, + const Vector3& p_FP2, + const Vector3& p_FQ2, S* s, S* t, +@@ -104,7 +103,6 @@ FCL_EXPORT S closestPtSegmentSegment(const Vector3& p_FP1, + @tparam S The scalar type for computation. + */ + template +-FCL_EXPORT + bool capsuleCapsuleDistance(const Capsule& s1, const Transform3& X_FC1, + const Capsule& s2, const Transform3& X_FC2, + S* dist, Vector3* p_FW1, Vector3* p_FW2); +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace-inl.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace-inl.h +index 09a86f5..039ffb8 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace-inl.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace-inl.h +@@ -46,6 +46,12 @@ namespace fcl + namespace detail + { + ++template <> ++FCL_EXPORT float halfspaceIntersectTolerance(); ++ ++template <> ++FCL_EXPORT double halfspaceIntersectTolerance(); ++ + //============================================================================== + extern template + bool sphereHalfspaceIntersect( +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace.h +index 62fda4c..ea5dd2f 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/halfspace.h +@@ -56,25 +56,14 @@ namespace detail + { + + template +-FCL_EXPORT + S halfspaceIntersectTolerance(); + +-template <> +-FCL_EXPORT +-float halfspaceIntersectTolerance(); +- +-template <> +-FCL_EXPORT +-double halfspaceIntersectTolerance(); +- + template +-FCL_EXPORT + bool sphereHalfspaceIntersect(const Sphere& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool ellipsoidHalfspaceIntersect(const Ellipsoid& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); +@@ -85,36 +74,30 @@ bool ellipsoidHalfspaceIntersect(const Ellipsoid& s1, const Transform3& tf + /// check whether d - n * T - (R^T n) (a v1 + b v2 + c v3) >= 0 for some a, b, c + /// the max value of left side is d - n * T + |(R^T n) (a v1 + b v2 + c v3)|, check that is enough + template +-FCL_EXPORT + bool boxHalfspaceIntersect(const Box& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2); + + template +-FCL_EXPORT + bool boxHalfspaceIntersect(const Box& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool capsuleHalfspaceIntersect(const Capsule& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool cylinderHalfspaceIntersect(const Cylinder& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool coneHalfspaceIntersect(const Cone& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool convexHalfspaceIntersect(const Convex& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + Vector3* contact_points, S* penetration_depth, Vector3* normal); +@@ -160,13 +143,12 @@ bool convexHalfspaceIntersect(const Convex& s1, const Transform3& tf1, + /// @return `true` if the two geometries are intersecting. + /// @tparam S The computational scalar. + template +-FCL_EXPORT bool convexHalfspaceIntersect( ++bool convexHalfspaceIntersect( + const Convex& convex_C, const Transform3& X_FC, + const Halfspace& half_space_H, const Transform3& X_FH, + std::vector>* contacts); + + template +-FCL_EXPORT + bool halfspaceTriangleIntersect(const Halfspace& s1, const Transform3& tf1, + const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf2, + Vector3* contact_points, S* penetration_depth, Vector3* normal); +@@ -179,7 +161,6 @@ bool halfspaceTriangleIntersect(const Halfspace& s1, const Transform3& tf1 + /// if not parallel + /// return the intersection ray, return code 3. ray origin is p and direction is d + template +-FCL_EXPORT + bool planeHalfspaceIntersect(const Plane& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + Plane& pl, +@@ -188,7 +169,6 @@ bool planeHalfspaceIntersect(const Plane& s1, const Transform3& tf1, + int& ret); + + template +-FCL_EXPORT + bool halfspacePlaneIntersect(const Halfspace& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + Plane& pl, Vector3& p, Vector3& d, +@@ -204,7 +184,6 @@ bool halfspacePlaneIntersect(const Halfspace& s1, const Transform3& tf1, + /// if the separation planes of the two halfspaces are not parallel, return intersection ray, return code 4. ray origin is p and direction is d + /// collision free return code 0 + template +-FCL_EXPORT + bool halfspaceIntersect(const Halfspace& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + Vector3& p, Vector3& d, +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/plane.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/plane.h +index 86b141f..e28e10d 100755 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/plane.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/plane.h +@@ -55,25 +55,22 @@ namespace detail + { + + template +-FCL_EXPORT + S planeIntersectTolerance(); + +-template <> ++extern template + FCL_EXPORT + double planeIntersectTolerance(); + +-template <> ++extern template + FCL_EXPORT + float planeIntersectTolerance(); + + template +-FCL_EXPORT + bool spherePlaneIntersect(const Sphere& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool ellipsoidPlaneIntersect(const Ellipsoid& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); +@@ -86,18 +83,15 @@ bool ellipsoidPlaneIntersect(const Ellipsoid& s1, const Transform3& tf1, + /// (R^T n) (a v1 + b v2 + c v3) can get |(R^T n) (a v1 + b v2 + c v3)| for one a, b, c. + /// if |d - n * T| <= |(R^T n)(a v1 + b v2 + c v3)| then can get both positive and negative value on the right side. + template +-FCL_EXPORT + bool boxPlaneIntersect(const Box& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2); + + template +-FCL_EXPORT + bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); +@@ -108,36 +102,30 @@ bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, + /// (n^T * v3) * h + n * T -d + r * (cosa * (n^T * R * v1) + sina * (n^T * R * v2)) ~ 0 + /// (n^T * v3) * h + r * (cosa * (n^T * R * v1) + sina * (n^T * R * v2)) + n * T - d ~ 0 + template +-FCL_EXPORT + bool cylinderPlaneIntersect(const Cylinder& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2); + + template +-FCL_EXPORT + bool cylinderPlaneIntersect(const Cylinder& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool conePlaneIntersect(const Cone& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool convexPlaneIntersect(const Convex& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + Vector3* contact_points, S* penetration_depth, Vector3* normal); + + template +-FCL_EXPORT + bool planeTriangleIntersect(const Plane& s1, const Transform3& tf1, + const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf2, + Vector3* contact_points, S* penetration_depth, Vector3* normal); + + template +-FCL_EXPORT + bool planeIntersect(const Plane& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box-inl.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box-inl.h +index 77e0a66..38a2a0b 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box-inl.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box-inl.h +@@ -42,14 +42,14 @@ + namespace fcl { + namespace detail { + +-extern template FCL_EXPORT bool ++extern template bool + sphereBoxIntersect(const Sphere& sphere, const Transform3& X_FS, + const Box& box, const Transform3& X_FB, + std::vector>* contacts); + + //============================================================================== + +-extern template FCL_EXPORT bool ++extern template bool + sphereBoxDistance(const Sphere& sphere, const Transform3& X_FS, + const Box& box, const Transform3& X_FB, + double* distance, Vector3* p_FSb, +@@ -95,7 +95,7 @@ bool nearestPointInBox(const Vector3& size, const Vector3& p_BQ, + //============================================================================== + + template +-FCL_EXPORT bool sphereBoxIntersect(const Sphere& sphere, ++bool sphereBoxIntersect(const Sphere& sphere, + const Transform3& X_FS, const Box& box, + const Transform3& X_FB, + std::vector>* contacts) { +@@ -180,7 +180,7 @@ FCL_EXPORT bool sphereBoxIntersect(const Sphere& sphere, + //============================================================================== + + template +-FCL_EXPORT bool sphereBoxDistance(const Sphere& sphere, ++bool sphereBoxDistance(const Sphere& sphere, + const Transform3& X_FS, const Box& box, + const Transform3& X_FB, S* distance, + Vector3* p_FSb, Vector3* p_FBs) { +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box.h +index 87fabf8..339a6dd 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_box.h +@@ -107,7 +107,7 @@ namespace detail { + @return True if the objects are colliding (including touching). + @tparam S The scalar parameter (must be a valid Eigen scalar). */ + template +-FCL_EXPORT bool sphereBoxIntersect(const Sphere& sphere, ++bool sphereBoxIntersect(const Sphere& sphere, + const Transform3& X_FS, const Box& box, + const Transform3& X_FB, + std::vector>* contacts); +@@ -127,7 +127,7 @@ FCL_EXPORT bool sphereBoxIntersect(const Sphere& sphere, + @return True if the objects are separated. + @tparam S The scalar parameter (must be a valid Eigen scalar). */ + template +-FCL_EXPORT bool sphereBoxDistance(const Sphere& sphere, ++bool sphereBoxDistance(const Sphere& sphere, + const Transform3& X_FS, const Box& box, + const Transform3& X_FB, S* distance, + Vector3* p_FSb, Vector3* p_FBs); +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.h +index 2820b32..81061f3 100755 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.h +@@ -53,7 +53,6 @@ namespace detail + // given by Dan Sunday's page: + // http://geomalgorithms.com/a02-_lines.html + template +-FCL_EXPORT + void lineSegmentPointClosestToPoint( + const Vector3 &p, + const Vector3 &s1, +@@ -61,13 +60,11 @@ void lineSegmentPointClosestToPoint( + Vector3 &sp); + + template +-FCL_EXPORT + bool sphereCapsuleIntersect(const Sphere& s1, const Transform3& tf1, + const Capsule& s2, const Transform3& tf2, + std::vector>* contacts); + + template +-FCL_EXPORT + bool sphereCapsuleDistance(const Sphere& s1, const Transform3& tf1, + const Capsule& s2, const Transform3& tf2, + S* dist, Vector3* p1, Vector3* p2); +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder-inl.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder-inl.h +index abda262..f1fdaca 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder-inl.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder-inl.h +@@ -42,7 +42,7 @@ + namespace fcl { + namespace detail { + +-extern template FCL_EXPORT bool ++extern template bool + sphereCylinderIntersect(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, +@@ -51,7 +51,7 @@ sphereCylinderIntersect(const Sphere& sphere, + + //============================================================================== + +-extern template FCL_EXPORT bool ++extern template bool + sphereCylinderDistance(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, +@@ -111,7 +111,7 @@ bool nearestPointInCylinder(const S& height, const S& radius, + //============================================================================== + + template +-FCL_EXPORT bool sphereCylinderIntersect( ++bool sphereCylinderIntersect( + const Sphere& sphere, const Transform3& X_FS, + const Cylinder& cylinder, const Transform3& X_FC, + std::vector>* contacts) { +@@ -223,7 +223,7 @@ FCL_EXPORT bool sphereCylinderIntersect( + //============================================================================== + + template +-FCL_EXPORT bool sphereCylinderDistance(const Sphere& sphere, ++bool sphereCylinderDistance(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, + const Transform3& X_FC, S* distance, +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.h +index 4209b03..3492b62 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.h +@@ -102,7 +102,7 @@ namespace detail { + @return True if the objects are colliding (including touching). + @tparam S The scalar parameter (must be a valid Eigen scalar). */ + template +-FCL_EXPORT bool sphereCylinderIntersect(const Sphere& sphere, ++bool sphereCylinderIntersect(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, + const Transform3& X_FC, +@@ -123,7 +123,7 @@ FCL_EXPORT bool sphereCylinderIntersect(const Sphere& sphere, + @return True if the objects are separated. + @tparam S The scalar parameter (must be a valid Eigen scalar). */ + template +-FCL_EXPORT bool sphereCylinderDistance(const Sphere& sphere, ++bool sphereCylinderDistance(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, + const Transform3& X_FC, S* distance, +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_sphere-inl.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_sphere-inl.h +index d12671c..2712aa9 100755 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_sphere-inl.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_sphere-inl.h +@@ -62,7 +62,6 @@ bool sphereSphereDistance(const Sphere& s1, const Transform3& tf + + //============================================================================== + template +-FCL_EXPORT + bool sphereSphereIntersect(const Sphere& s1, const Transform3& tf1, + const Sphere& s2, const Transform3& tf2, + std::vector>* contacts) +@@ -87,7 +86,6 @@ bool sphereSphereIntersect(const Sphere& s1, const Transform3& tf1, + + //============================================================================== + template +-FCL_EXPORT + bool sphereSphereDistance(const Sphere& s1, const Transform3& tf1, + const Sphere& s2, const Transform3& tf2, + S* dist, Vector3* p1, Vector3* p2) +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.h +index 15a2a70..61da0d5 100755 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.h +@@ -49,33 +49,27 @@ namespace detail + + /** @brief the minimum distance from a point to a line */ + template +-FCL_EXPORT + S segmentSqrDistance(const Vector3& from, const Vector3& to,const Vector3& p, Vector3& nearest); + + /// @brief Whether a point's projection is in a triangle + template +-FCL_EXPORT + bool projectInTriangle(const Vector3& p1, const Vector3& p2, const Vector3& p3, const Vector3& normal, const Vector3& p); + + template +-FCL_EXPORT + bool sphereTriangleIntersect(const Sphere& s, const Transform3& tf, + const Vector3& P1, const Vector3& P2, const Vector3& P3, Vector3* contact_points, S* penetration_depth, Vector3* normal_); + + template +-FCL_EXPORT + bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf, + const Vector3& P1, const Vector3& P2, const Vector3& P3, + S* dist); + + template +-FCL_EXPORT + bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf, + const Vector3& P1, const Vector3& P2, const Vector3& P3, + S* dist, Vector3* p1, Vector3* p2); + + template +-FCL_EXPORT + bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf1, + const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf2, + S* dist, Vector3* p1, Vector3* p2); +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance-inl.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance-inl.h +index 33a1d4f..9cc32c6 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance-inl.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance-inl.h +@@ -48,7 +48,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT TriangleDistance; ++class TriangleDistance; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance.h b/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance.h +index cb4b2e6..cc800f0 100644 +--- a/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance.h ++++ b/include/fcl/narrowphase/detail/primitive_shape_algorithm/triangle_distance.h +@@ -48,7 +48,7 @@ namespace detail + + /// @brief Triangle distance functions + template +-class FCL_EXPORT TriangleDistance ++class TriangleDistance + { + public: + +diff --git a/include/fcl/narrowphase/detail/traversal/collision/bvh_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/bvh_collision_traversal_node.h +index 021a478..44cfe31 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/bvh_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/bvh_collision_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for collision between BVH models + template +-class FCL_EXPORT BVHCollisionTraversalNode ++class BVHCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/collision/bvh_shape_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/bvh_shape_collision_traversal_node.h +index 9247d56..551223d 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/bvh_shape_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/bvh_shape_collision_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for collision between BVH and shape + template +-class FCL_EXPORT BVHShapeCollisionTraversalNode ++class BVHShapeCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base-inl.h b/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base-inl.h +index 86743e2..f1243c8 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base-inl.h +@@ -50,7 +50,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT CollisionTraversalNodeBase; ++class CollisionTraversalNodeBase; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base.h b/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base.h +index 6f6b10c..58ea125 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/collision_traversal_node_base.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Node structure encoding the information required for collision traversal. + template +-class FCL_EXPORT CollisionTraversalNodeBase : public TraversalNodeBase ++class CollisionTraversalNodeBase : public TraversalNodeBase + { + public: + CollisionTraversalNodeBase(); +diff --git a/include/fcl/narrowphase/detail/traversal/collision/intersect-inl.h b/include/fcl/narrowphase/detail/traversal/collision/intersect-inl.h +index 4c9d606..7834b24 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/intersect-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/intersect-inl.h +@@ -48,7 +48,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT Intersect; ++class Intersect; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/detail/traversal/collision/intersect.h b/include/fcl/narrowphase/detail/traversal/collision/intersect.h +index d653b87..355876e 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/intersect.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/intersect.h +@@ -51,7 +51,7 @@ namespace detail + + /// @brief CCD intersect kernel among primitives + template +-class FCL_EXPORT Intersect ++class Intersect + { + + public: +diff --git a/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node-inl.h b/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node-inl.h +index 0a2731f..66255b6 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node-inl.h +@@ -52,7 +52,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT MeshCollisionTraversalNodeOBB; ++class MeshCollisionTraversalNodeOBB; + + //============================================================================== + extern template +@@ -67,7 +67,7 @@ bool initialize( + + //============================================================================== + extern template +-class FCL_EXPORT MeshCollisionTraversalNodeRSS; ++class MeshCollisionTraversalNodeRSS; + + //============================================================================== + extern template +@@ -82,7 +82,7 @@ bool initialize( + + //============================================================================== + extern template +-class FCL_EXPORT MeshCollisionTraversalNodekIOS; ++class MeshCollisionTraversalNodekIOS; + + //============================================================================== + extern template +@@ -97,7 +97,7 @@ bool initialize( + + //============================================================================== + extern template +-class FCL_EXPORT MeshCollisionTraversalNodeOBBRSS; ++class MeshCollisionTraversalNodeOBBRSS; + + //============================================================================== + extern template +diff --git a/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.h +index 7e3d993..af01744 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.h +@@ -55,7 +55,7 @@ namespace detail + + /// @brief Traversal node for collision between two meshes + template +-class FCL_EXPORT MeshCollisionTraversalNode : public BVHCollisionTraversalNode ++class MeshCollisionTraversalNode : public BVHCollisionTraversalNode + { + public: + +@@ -81,7 +81,6 @@ public: + /// @brief Initialize traversal node for collision between two meshes, given the + /// current transforms + template +-FCL_EXPORT + bool initialize( + MeshCollisionTraversalNode& node, + BVHModel& model1, +@@ -96,7 +95,7 @@ bool initialize( + /// @brief Traversal node for collision between two meshes if their underlying + /// BVH node is oriented node (OBB, RSS, OBBRSS, kIOS) + template +-class FCL_EXPORT MeshCollisionTraversalNodeOBB : public MeshCollisionTraversalNode> ++class MeshCollisionTraversalNodeOBB : public MeshCollisionTraversalNode> + { + public: + MeshCollisionTraversalNodeOBB(); +@@ -125,7 +124,6 @@ using MeshCollisionTraversalNodeOBBd = MeshCollisionTraversalNodeOBB; + /// @brief Initialize traversal node for collision between two meshes, + /// specialized for OBB type + template +-FCL_EXPORT + bool initialize( + MeshCollisionTraversalNodeOBB& node, + const BVHModel>& model1, +@@ -136,7 +134,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT MeshCollisionTraversalNodeRSS : public MeshCollisionTraversalNode> ++class MeshCollisionTraversalNodeRSS : public MeshCollisionTraversalNode> + { + public: + MeshCollisionTraversalNodeRSS(); +@@ -148,12 +146,12 @@ public: + // FCL_DEPRECATED + // bool BVTesting(int b1, int b2, const Matrix3& Rc, const Vector3& Tc) const; + +- bool BVTesting(int b1, int b2, const Transform3& tf) const; ++ // bool BVTesting(int b1, int b2, const Transform3& tf) const; + + // FCL_DEPRECATED + // void leafTesting(int b1, int b2, const Matrix3& Rc, const Vector3& Tc) const; + +- void leafTesting(int b1, int b2, const Transform3& tf) const; ++ // void leafTesting(int b1, int b2, const Transform3& tf) const; + + Matrix3 R; + Vector3 T; +@@ -167,7 +165,6 @@ using MeshCollisionTraversalNodeRSSd = MeshCollisionTraversalNodeRSS; + /// @brief Initialize traversal node for collision between two meshes, + /// specialized for RSS type + template +-FCL_EXPORT + bool initialize( + MeshCollisionTraversalNodeRSS& node, + const BVHModel>& model1, +@@ -178,7 +175,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT MeshCollisionTraversalNodekIOS : public MeshCollisionTraversalNode> ++class MeshCollisionTraversalNodekIOS : public MeshCollisionTraversalNode> + { + public: + MeshCollisionTraversalNodekIOS(); +@@ -199,7 +196,6 @@ using MeshCollisionTraversalNodekIOSd = MeshCollisionTraversalNodekIOS; + /// @brief Initialize traversal node for collision between two meshes, + /// specialized for kIOS type + template +-FCL_EXPORT + bool initialize( + MeshCollisionTraversalNodekIOS& node, + const BVHModel>& model1, +@@ -210,7 +206,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT MeshCollisionTraversalNodeOBBRSS : public MeshCollisionTraversalNode> ++class MeshCollisionTraversalNodeOBBRSS : public MeshCollisionTraversalNode> + { + public: + MeshCollisionTraversalNodeOBBRSS(); +@@ -232,7 +228,6 @@ using MeshCollisionTraversalNodeOBBRSSd = MeshCollisionTraversalNodeOBBRSS +-FCL_EXPORT + bool initialize( + MeshCollisionTraversalNodeOBBRSS& node, + const BVHModel>& model1, +@@ -243,7 +238,6 @@ bool initialize( + CollisionResult& result); + + template +-FCL_EXPORT + void meshCollisionOrientedNodeLeafTesting( + int b1, + int b2, +@@ -264,7 +258,6 @@ void meshCollisionOrientedNodeLeafTesting( + CollisionResult& result); + + template +-FCL_EXPORT + void meshCollisionOrientedNodeLeafTesting( + int b1, + int b2, +diff --git a/include/fcl/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.h +index 82425a5..a9e7b01 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.h +@@ -48,7 +48,7 @@ namespace detail + + /// @brief Traversal node for continuous collision between BVH models + template +-struct FCL_EXPORT BVHContinuousCollisionPair ++struct BVHContinuousCollisionPair + { + BVHContinuousCollisionPair(); + +@@ -66,7 +66,7 @@ struct FCL_EXPORT BVHContinuousCollisionPair + + /// @brief Traversal node for continuous collision between meshes + template +-class FCL_EXPORT MeshContinuousCollisionTraversalNode ++class MeshContinuousCollisionTraversalNode + : public BVHCollisionTraversalNode + { + public: +@@ -101,7 +101,6 @@ public: + /// @brief Initialize traversal node for continuous collision detection between + /// two meshes + template +-FCL_EXPORT + bool initialize( + MeshContinuousCollisionTraversalNode& node, + const BVHModel& model1, +diff --git a/include/fcl/narrowphase/detail/traversal/collision/mesh_shape_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/mesh_shape_collision_traversal_node.h +index a06250a..8a658cf 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/mesh_shape_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/mesh_shape_collision_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for collision between mesh and shape + template +-class FCL_EXPORT MeshShapeCollisionTraversalNode ++class MeshShapeCollisionTraversalNode + : public BVHShapeCollisionTraversalNode + { + public: +@@ -75,7 +75,6 @@ public: + /// @brief Initialize traversal node for collision between one mesh and one + /// shape, given current object transform + template +-FCL_EXPORT + bool initialize( + MeshShapeCollisionTraversalNode& node, + BVHModel& model1, +@@ -88,7 +87,6 @@ bool initialize( + bool use_refit = false, bool refit_bottomup = false); + + template +-FCL_EXPORT + void meshShapeCollisionOrientedNodeLeafTesting( + int b1, + int b2, +@@ -107,7 +105,7 @@ void meshShapeCollisionOrientedNodeLeafTesting( + + /// @brief Traversal node for mesh and shape, when mesh BVH is one of the oriented node (OBB, RSS, OBBRSS, kIOS) + template +-class FCL_EXPORT MeshShapeCollisionTraversalNodeOBB ++class MeshShapeCollisionTraversalNodeOBB + : public MeshShapeCollisionTraversalNode< + OBB, Shape, NarrowPhaseSolver> + { +@@ -123,7 +121,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for OBB type + template +-FCL_EXPORT + bool initialize( + MeshShapeCollisionTraversalNodeOBB& node, + const BVHModel>& model1, +@@ -135,7 +132,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT MeshShapeCollisionTraversalNodeRSS ++class MeshShapeCollisionTraversalNodeRSS + : public MeshShapeCollisionTraversalNode< + RSS, Shape, NarrowPhaseSolver> + { +@@ -151,7 +148,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for RSS type + template +-FCL_EXPORT + bool initialize( + MeshShapeCollisionTraversalNodeRSS& node, + const BVHModel>& model1, +@@ -163,7 +159,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT MeshShapeCollisionTraversalNodekIOS ++class MeshShapeCollisionTraversalNodekIOS + : public MeshShapeCollisionTraversalNode< + kIOS, Shape, NarrowPhaseSolver> + { +@@ -179,7 +175,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for kIOS type + template +-FCL_EXPORT + bool initialize( + MeshShapeCollisionTraversalNodekIOS& node, + const BVHModel>& model1, +@@ -191,7 +186,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT MeshShapeCollisionTraversalNodeOBBRSS ++class MeshShapeCollisionTraversalNodeOBBRSS + : public MeshShapeCollisionTraversalNode< + OBBRSS, Shape, NarrowPhaseSolver> + { +@@ -207,7 +202,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for OBBRSS type + template +-FCL_EXPORT + bool initialize( + MeshShapeCollisionTraversalNodeOBBRSS& node, + const BVHModel>& model1, +diff --git a/include/fcl/narrowphase/detail/traversal/collision/shape_bvh_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/shape_bvh_collision_traversal_node.h +index d665279..fc2ca97 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/shape_bvh_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/shape_bvh_collision_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for collision between shape and BVH + template +-class FCL_EXPORT ShapeBVHCollisionTraversalNode ++class ShapeBVHCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/collision/shape_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/shape_collision_traversal_node.h +index 68394d1..575807f 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/shape_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/shape_collision_traversal_node.h +@@ -50,7 +50,7 @@ namespace detail + + /// @brief Traversal node for collision between two shapes + template +-class FCL_EXPORT ShapeCollisionTraversalNode ++class ShapeCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node-inl.h b/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node-inl.h +index d4fbdfb..ed405f5 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node-inl.h +@@ -50,7 +50,6 @@ namespace detail + + //============================================================================== + template +-FCL_EXPORT + ShapeMeshCollisionTraversalNode::ShapeMeshCollisionTraversalNode() + : ShapeBVHCollisionTraversalNode() + { +@@ -62,7 +61,6 @@ ShapeMeshCollisionTraversalNode::ShapeMeshCollisio + + //============================================================================== + template +-FCL_EXPORT + void ShapeMeshCollisionTraversalNode::leafTesting(int b1, int b2) const + { + FCL_UNUSED(b1); +@@ -131,7 +129,6 @@ void ShapeMeshCollisionTraversalNode::leafTesting( + + //============================================================================== + template +-FCL_EXPORT + bool ShapeMeshCollisionTraversalNode::canStop() const + { + return this->request.isSatisfied(*(this->result)); +@@ -139,7 +136,6 @@ bool ShapeMeshCollisionTraversalNode::canStop() co + + //============================================================================== + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNode& node, + const Shape& model1, +@@ -195,14 +191,12 @@ bool initialize( + + //============================================================================== + template +-FCL_EXPORT + ShapeMeshCollisionTraversalNodeOBB::ShapeMeshCollisionTraversalNodeOBB() : ShapeMeshCollisionTraversalNode, NarrowPhaseSolver>() + { + } + + //============================================================================== + template +-FCL_EXPORT + bool ShapeMeshCollisionTraversalNodeOBB::BVTesting(int b1, int b2) const + { + FCL_UNUSED(b1); +@@ -213,7 +207,6 @@ bool ShapeMeshCollisionTraversalNodeOBB::BVTesting(int + + //============================================================================== + template +-FCL_EXPORT + void ShapeMeshCollisionTraversalNodeOBB::leafTesting(int b1, int b2) const + { + detail::meshShapeCollisionOrientedNodeLeafTesting(b2, b1, *(this->model2), this->model1, this->vertices, this->tri_indices, +@@ -224,14 +217,12 @@ void ShapeMeshCollisionTraversalNodeOBB::leafTesting(i + + //============================================================================== + template +-FCL_EXPORT + ShapeMeshCollisionTraversalNodeRSS::ShapeMeshCollisionTraversalNodeRSS() : ShapeMeshCollisionTraversalNode, NarrowPhaseSolver>() + { + } + + //============================================================================== + template +-FCL_EXPORT + bool ShapeMeshCollisionTraversalNodeRSS::BVTesting(int b1, int b2) const + { + FCL_UNUSED(b1); +@@ -242,7 +233,6 @@ bool ShapeMeshCollisionTraversalNodeRSS::BVTesting(int + + //============================================================================== + template +-FCL_EXPORT + void ShapeMeshCollisionTraversalNodeRSS::leafTesting(int b1, int b2) const + { + detail::meshShapeCollisionOrientedNodeLeafTesting(b2, b1, *(this->model2), this->model1, this->vertices, this->tri_indices, +@@ -253,14 +243,12 @@ void ShapeMeshCollisionTraversalNodeRSS::leafTesting(i + + //============================================================================== + template +-FCL_EXPORT + ShapeMeshCollisionTraversalNodekIOS::ShapeMeshCollisionTraversalNodekIOS() : ShapeMeshCollisionTraversalNode, NarrowPhaseSolver>() + { + } + + //============================================================================== + template +-FCL_EXPORT + bool ShapeMeshCollisionTraversalNodekIOS::BVTesting(int b1, int b2) const + { + FCL_UNUSED(b1); +@@ -271,7 +259,6 @@ bool ShapeMeshCollisionTraversalNodekIOS::BVTesting(in + + //============================================================================== + template +-FCL_EXPORT + void ShapeMeshCollisionTraversalNodekIOS::leafTesting(int b1, int b2) const + { + detail::meshShapeCollisionOrientedNodeLeafTesting(b2, b1, *(this->model2), this->model1, this->vertices, this->tri_indices, +@@ -282,14 +269,12 @@ void ShapeMeshCollisionTraversalNodekIOS::leafTesting( + + //============================================================================== + template +-FCL_EXPORT + ShapeMeshCollisionTraversalNodeOBBRSS::ShapeMeshCollisionTraversalNodeOBBRSS() : ShapeMeshCollisionTraversalNode, NarrowPhaseSolver>() + { + } + + //============================================================================== + template +-FCL_EXPORT + bool ShapeMeshCollisionTraversalNodeOBBRSS::BVTesting(int b1, int b2) const + { + FCL_UNUSED(b1); +@@ -300,7 +285,6 @@ bool ShapeMeshCollisionTraversalNodeOBBRSS::BVTesting( + + //============================================================================== + template +-FCL_EXPORT + void ShapeMeshCollisionTraversalNodeOBBRSS::leafTesting(int b1, int b2) const + { + detail::meshShapeCollisionOrientedNodeLeafTesting(b2, b1, *(this->model2), this->model1, this->vertices, this->tri_indices, +@@ -341,7 +325,6 @@ static bool setupShapeMeshCollisionOrientedNode(OrientedNode +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodeOBB& node, + const Shape& model1, +@@ -358,7 +341,6 @@ bool initialize( + + //============================================================================== + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodeRSS& node, + const Shape& model1, +@@ -375,7 +357,6 @@ bool initialize( + + //============================================================================== + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodekIOS& node, + const Shape& model1, +@@ -392,7 +373,6 @@ bool initialize( + + //============================================================================== + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodeOBBRSS& node, + const Shape& model1, +diff --git a/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node.h +index 5ebcc03..1514a5e 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision/shape_mesh_collision_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for collision between shape and mesh + template +-class FCL_EXPORT ShapeMeshCollisionTraversalNode ++class ShapeMeshCollisionTraversalNode + : public ShapeBVHCollisionTraversalNode + { + public: +@@ -74,7 +74,6 @@ public: + /// @brief Initialize traversal node for collision between one mesh and one + /// shape, given current object transform + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNode& node, + const Shape& model1, +@@ -88,7 +87,7 @@ bool initialize( + + /// @brief Traversal node for shape and mesh, when mesh BVH is one of the oriented node (OBB, RSS, OBBRSS, kIOS) + template +-class FCL_EXPORT ShapeMeshCollisionTraversalNodeOBB ++class ShapeMeshCollisionTraversalNodeOBB + : public ShapeMeshCollisionTraversalNode< + Shape, OBB, NarrowPhaseSolver> + { +@@ -103,7 +102,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for OBB type + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodeOBB& node, + const Shape& model1, +@@ -115,7 +113,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT ShapeMeshCollisionTraversalNodeRSS ++class ShapeMeshCollisionTraversalNodeRSS + : public ShapeMeshCollisionTraversalNode, NarrowPhaseSolver> + { + public: +@@ -130,7 +128,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for RSS type + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodeRSS& node, + const Shape& model1, +@@ -142,7 +139,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT ShapeMeshCollisionTraversalNodekIOS ++class ShapeMeshCollisionTraversalNodekIOS + : public ShapeMeshCollisionTraversalNode, NarrowPhaseSolver> + { + public: +@@ -157,7 +154,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for kIOS type + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodekIOS& node, + const Shape& model1, +@@ -169,7 +165,7 @@ bool initialize( + CollisionResult& result); + + template +-class FCL_EXPORT ShapeMeshCollisionTraversalNodeOBBRSS ++class ShapeMeshCollisionTraversalNodeOBBRSS + : public ShapeMeshCollisionTraversalNode, NarrowPhaseSolver> + { + public: +@@ -184,7 +180,6 @@ public: + /// @brief Initialize the traversal node for collision between one mesh and one + /// shape, specialized for OBBRSS type + template +-FCL_EXPORT + bool initialize( + ShapeMeshCollisionTraversalNodeOBBRSS& node, + const Shape& model1, +diff --git a/include/fcl/narrowphase/detail/traversal/collision_node.h b/include/fcl/narrowphase/detail/traversal/collision_node.h +index c00a1a1..d15f4ee 100644 +--- a/include/fcl/narrowphase/detail/traversal/collision_node.h ++++ b/include/fcl/narrowphase/detail/traversal/collision_node.h +@@ -53,27 +53,22 @@ namespace detail + + /// @brief collision on collision traversal node; can use front list to accelerate + template +-FCL_EXPORT + void collide(CollisionTraversalNodeBase* node, BVHFrontList* front_list = nullptr); + + /// @brief self collision on collision traversal node; can use front list to accelerate + template +-FCL_EXPORT + void selfCollide(CollisionTraversalNodeBase* node, BVHFrontList* front_list = nullptr); + + /// @brief distance computation on distance traversal node; can use front list to accelerate + template +-FCL_EXPORT + void distance(DistanceTraversalNodeBase* node, BVHFrontList* front_list = nullptr, int qsize = 2); + + /// @brief special collision on OBB traversal node + template +-FCL_EXPORT + void collide2(MeshCollisionTraversalNodeOBB* node, BVHFrontList* front_list = nullptr); + + /// @brief special collision on RSS traversal node + template +-FCL_EXPORT + void collide2(MeshCollisionTraversalNodeRSS* node, BVHFrontList* front_list = nullptr); + + } // namespace detail +diff --git a/include/fcl/narrowphase/detail/traversal/distance/bvh_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/bvh_distance_traversal_node.h +index d56cbe2..5310bdd 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/bvh_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/bvh_distance_traversal_node.h +@@ -50,7 +50,7 @@ namespace detail + + /// @brief Traversal node for distance computation between BVH models + template +-class FCL_EXPORT BVHDistanceTraversalNode ++class BVHDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/distance/bvh_shape_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/bvh_shape_distance_traversal_node.h +index 50f4fc2..8231fc9 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/bvh_shape_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/bvh_shape_distance_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for distance computation between BVH and shape + template +-class FCL_EXPORT BVHShapeDistanceTraversalNode ++class BVHShapeDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.h b/include/fcl/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.h +index fb95a94..b372f84 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.h +@@ -47,7 +47,7 @@ namespace detail + { + + template +-struct FCL_EXPORT ConservativeAdvancementStackData ++struct ConservativeAdvancementStackData + { + ConservativeAdvancementStackData( + const Vector3& P1_, +diff --git a/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base-inl.h b/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base-inl.h +index 5fbeb5e..763179b 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base-inl.h +@@ -50,7 +50,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT DistanceTraversalNodeBase; ++class DistanceTraversalNodeBase; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base.h b/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base.h +index e4a69a2..72437ed 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/distance_traversal_node_base.h +@@ -50,7 +50,7 @@ namespace detail + + /// @brief Node structure encoding the information required for distance traversal. + template +-class FCL_EXPORT DistanceTraversalNodeBase : public TraversalNodeBase ++class DistanceTraversalNodeBase : public TraversalNodeBase + { + public: + DistanceTraversalNodeBase(); +diff --git a/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node-inl.h b/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node-inl.h +index 44ddde5..3358c61 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node-inl.h +@@ -51,7 +51,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT MeshConservativeAdvancementTraversalNodeRSS; ++class MeshConservativeAdvancementTraversalNodeRSS; + + //============================================================================== + extern template +@@ -65,7 +65,7 @@ bool initialize( + + //============================================================================== + extern template +-class FCL_EXPORT MeshConservativeAdvancementTraversalNodeOBBRSS; ++class MeshConservativeAdvancementTraversalNodeOBBRSS; + + //============================================================================== + extern template +diff --git a/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.h +index be72620..3f8035a 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.h +@@ -50,7 +50,7 @@ namespace detail + + /// @brief continuous collision node using conservative advancement. when using this default version, must refit the BVH in current configuration (R_t, T_t) into default configuration + template +-class FCL_EXPORT MeshConservativeAdvancementTraversalNode ++class MeshConservativeAdvancementTraversalNode + : public MeshDistanceTraversalNode + { + public: +@@ -97,7 +97,6 @@ public: + /// @brief Initialize traversal node for conservative advancement computation + /// between two meshes, given the current transforms + template +-FCL_EXPORT + bool initialize( + MeshConservativeAdvancementTraversalNode& node, + BVHModel& model1, +@@ -109,7 +108,7 @@ bool initialize( + bool refit_bottomup = false); + + template +-class FCL_EXPORT MeshConservativeAdvancementTraversalNodeRSS ++class MeshConservativeAdvancementTraversalNodeRSS + : public MeshConservativeAdvancementTraversalNode> + { + public: +@@ -150,7 +149,6 @@ using MeshConservativeAdvancementTraversalNodeRSSd = MeshConservativeAdvancement + /// @brief Initialize traversal node for conservative advancement computation + /// between two meshes, given the current transforms, specialized for RSS + template +-FCL_EXPORT + bool initialize( + MeshConservativeAdvancementTraversalNodeRSS& node, + const BVHModel>& model1, +@@ -160,7 +158,7 @@ bool initialize( + S w = 1); + + template +-class FCL_EXPORT MeshConservativeAdvancementTraversalNodeOBBRSS ++class MeshConservativeAdvancementTraversalNodeOBBRSS + : public MeshConservativeAdvancementTraversalNode> + { + public: +@@ -199,7 +197,6 @@ using MeshConservativeAdvancementTraversalNodeOBBRSSf = MeshConservativeAdvancem + using MeshConservativeAdvancementTraversalNodeOBBRSSd = MeshConservativeAdvancementTraversalNodeOBBRSS; + + template +-FCL_EXPORT + bool initialize( + MeshConservativeAdvancementTraversalNodeOBBRSS& node, + const BVHModel>& model1, +@@ -209,11 +206,9 @@ bool initialize( + S w = 1); + + template +-FCL_EXPORT + const Vector3 getBVAxis(const BV& bv, int i); + + template +-FCL_EXPORT + bool meshConservativeAdvancementTraversalNodeCanStop( + typename BV::S c, + typename BV::S min_distance, +@@ -228,7 +223,6 @@ bool meshConservativeAdvancementTraversalNodeCanStop( + typename BV::S& delta_t); + + template +-FCL_EXPORT + bool meshConservativeAdvancementOrientedNodeCanStop( + typename BV::S c, + typename BV::S min_distance, +@@ -243,7 +237,6 @@ bool meshConservativeAdvancementOrientedNodeCanStop( + typename BV::S& delta_t); + + template +-FCL_EXPORT + void meshConservativeAdvancementOrientedNodeLeafTesting( + int b1, + int b2, +diff --git a/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node-inl.h b/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node-inl.h +index 558149d..c4e0086 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node-inl.h +@@ -48,7 +48,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT MeshDistanceTraversalNodeRSS; ++class MeshDistanceTraversalNodeRSS; + + //============================================================================== + extern template +@@ -63,7 +63,7 @@ bool initialize( + + //============================================================================== + extern template +-class FCL_EXPORT MeshDistanceTraversalNodekIOS; ++class MeshDistanceTraversalNodekIOS; + + //============================================================================== + extern template +@@ -78,7 +78,7 @@ bool initialize( + + //============================================================================== + extern template +-class FCL_EXPORT MeshDistanceTraversalNodeOBBRSS; ++class MeshDistanceTraversalNodeOBBRSS; + + //============================================================================== + extern template +diff --git a/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.h +index 92f4461..e119e2a 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.h +@@ -52,7 +52,7 @@ namespace detail + + /// @brief Traversal node for distance computation between two meshes + template +-class FCL_EXPORT MeshDistanceTraversalNode : public BVHDistanceTraversalNode ++class MeshDistanceTraversalNode : public BVHDistanceTraversalNode + { + public: + +@@ -80,7 +80,6 @@ public: + /// @brief Initialize traversal node for distance computation between two + /// meshes, given the current transforms + template +-FCL_EXPORT + bool initialize( + MeshDistanceTraversalNode& node, + BVHModel& model1, +@@ -93,7 +92,7 @@ bool initialize( + + /// @brief Traversal node for distance computation between two meshes if their underlying BVH node is oriented node (RSS, OBBRSS, kIOS) + template +-class FCL_EXPORT MeshDistanceTraversalNodeRSS ++class MeshDistanceTraversalNodeRSS + : public MeshDistanceTraversalNode> + { + public: +@@ -123,7 +122,6 @@ using MeshDistanceTraversalNodeRSSd = MeshDistanceTraversalNodeRSS; + /// @brief Initialize traversal node for distance computation between two + /// meshes, specialized for RSS type + template +-FCL_EXPORT + bool initialize( + MeshDistanceTraversalNodeRSS& node, + const BVHModel>& model1, +@@ -134,7 +132,7 @@ bool initialize( + DistanceResult& result); + + template +-class FCL_EXPORT MeshDistanceTraversalNodekIOS ++class MeshDistanceTraversalNodekIOS + : public MeshDistanceTraversalNode> + { + public: +@@ -164,7 +162,6 @@ using MeshDistanceTraversalNodekIOSd = MeshDistanceTraversalNodekIOS; + /// @brief Initialize traversal node for distance computation between two + /// meshes, specialized for kIOS type + template +-FCL_EXPORT + bool initialize( + MeshDistanceTraversalNodekIOS& node, + const BVHModel>& model1, +@@ -175,7 +172,7 @@ bool initialize( + DistanceResult& result); + + template +-class FCL_EXPORT MeshDistanceTraversalNodeOBBRSS ++class MeshDistanceTraversalNodeOBBRSS + : public MeshDistanceTraversalNode> + { + public: +@@ -205,7 +202,6 @@ using MeshDistanceTraversalNodeOBBRSSd = MeshDistanceTraversalNodeOBBRSS + /// @brief Initialize traversal node for distance computation between two + /// meshes, specialized for OBBRSS type + template +-FCL_EXPORT + bool initialize( + MeshDistanceTraversalNodeOBBRSS& node, + const BVHModel>& model1, +@@ -216,7 +212,7 @@ bool initialize( + DistanceResult& result); + + template +-FCL_DEPRECATED_EXPORT ++FCL_DEPRECATED + void meshDistanceOrientedNodeLeafTesting( + int b1, + int b2, +@@ -234,7 +230,6 @@ void meshDistanceOrientedNodeLeafTesting( + DistanceResult& result); + + template +-FCL_EXPORT + void meshDistanceOrientedNodeLeafTesting( + int b1, + int b2, +@@ -251,7 +246,6 @@ void meshDistanceOrientedNodeLeafTesting( + DistanceResult& result); + + template +-FCL_EXPORT + void distancePreprocessOrientedNode( + const BVHModel* model1, + const BVHModel* model2, +@@ -267,7 +261,6 @@ void distancePreprocessOrientedNode( + DistanceResult& result); + + template +-FCL_EXPORT + void distancePreprocessOrientedNode( + const BVHModel* model1, + const BVHModel* model2, +@@ -282,7 +275,6 @@ void distancePreprocessOrientedNode( + DistanceResult& result); + + template +-FCL_EXPORT + void distancePostprocessOrientedNode( + const BVHModel* model1, + const BVHModel* model2, +diff --git a/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_conservative_advancement_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_conservative_advancement_traversal_node.h +index a9f8d75..68b97ec 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_conservative_advancement_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_conservative_advancement_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for conservative advancement computation between BVH and shape + template +-class FCL_EXPORT MeshShapeConservativeAdvancementTraversalNode ++class MeshShapeConservativeAdvancementTraversalNode + : public MeshShapeDistanceTraversalNode + { + public: +@@ -140,7 +140,7 @@ bool meshShapeConservativeAdvancementOrientedNodeCanStop( + typename BV::S& delta_t); + + template +-class FCL_EXPORT MeshShapeConservativeAdvancementTraversalNodeRSS ++class MeshShapeConservativeAdvancementTraversalNodeRSS + : public MeshShapeConservativeAdvancementTraversalNode< + RSS, Shape, NarrowPhaseSolver> + { +@@ -168,7 +168,7 @@ bool initialize( + typename Shape::S w = 1); + + template +-class FCL_EXPORT MeshShapeConservativeAdvancementTraversalNodeOBBRSS : ++class MeshShapeConservativeAdvancementTraversalNodeOBBRSS : + public MeshShapeConservativeAdvancementTraversalNode< + OBBRSS, Shape, NarrowPhaseSolver> + { +diff --git a/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_distance_traversal_node.h +index 0d40e2e..058a5c8 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/mesh_shape_distance_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for distance between mesh and shape + template +-class FCL_EXPORT MeshShapeDistanceTraversalNode ++class MeshShapeDistanceTraversalNode + : public BVHShapeDistanceTraversalNode + { + public: +@@ -118,7 +118,7 @@ bool initialize( + + /// @brief Traversal node for distance between mesh and shape, when mesh BVH is one of the oriented node (RSS, OBBRSS, kIOS) + template +-class FCL_EXPORT MeshShapeDistanceTraversalNodeRSS ++class MeshShapeDistanceTraversalNodeRSS + : public MeshShapeDistanceTraversalNode< + RSS, Shape, NarrowPhaseSolver> + { +@@ -148,7 +148,7 @@ bool initialize( + DistanceResult& result); + + template +-class FCL_EXPORT MeshShapeDistanceTraversalNodekIOS ++class MeshShapeDistanceTraversalNodekIOS + : public MeshShapeDistanceTraversalNode, Shape, NarrowPhaseSolver> + { + public: +@@ -177,7 +177,7 @@ bool initialize( + DistanceResult& result); + + template +-class FCL_EXPORT MeshShapeDistanceTraversalNodeOBBRSS ++class MeshShapeDistanceTraversalNodeOBBRSS + : public MeshShapeDistanceTraversalNode, Shape, NarrowPhaseSolver> + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/distance/shape_bvh_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/shape_bvh_distance_traversal_node.h +index 53176cf..3d176a0 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/shape_bvh_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/shape_bvh_distance_traversal_node.h +@@ -50,7 +50,7 @@ namespace detail + + /// @brief Traversal node for distance computation between shape and BVH + template +-class FCL_EXPORT ShapeBVHDistanceTraversalNode ++class ShapeBVHDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/distance/shape_conservative_advancement_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/shape_conservative_advancement_traversal_node.h +index 525df72..3e92008 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/shape_conservative_advancement_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/shape_conservative_advancement_traversal_node.h +@@ -47,7 +47,7 @@ namespace detail + { + + template +-class FCL_EXPORT ShapeConservativeAdvancementTraversalNode ++class ShapeConservativeAdvancementTraversalNode + : public ShapeDistanceTraversalNode + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/distance/shape_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/shape_distance_traversal_node.h +index bfd1e1f..ad74992 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/shape_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/shape_distance_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for distance between two shapes + template +-class FCL_EXPORT ShapeDistanceTraversalNode ++class ShapeDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h +index bf54940..069491b 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + { + + template +-class FCL_EXPORT ShapeMeshConservativeAdvancementTraversalNode ++class ShapeMeshConservativeAdvancementTraversalNode + : public ShapeMeshDistanceTraversalNode + { + public: +@@ -103,7 +103,7 @@ bool initialize( + bool refit_bottomup = false); + + template +-class FCL_EXPORT ShapeMeshConservativeAdvancementTraversalNodeRSS ++class ShapeMeshConservativeAdvancementTraversalNodeRSS + : public ShapeMeshConservativeAdvancementTraversalNode< + Shape, RSS, NarrowPhaseSolver> + { +@@ -130,7 +130,7 @@ bool initialize( + typename Shape::S w = 1); + + template +-class FCL_EXPORT ShapeMeshConservativeAdvancementTraversalNodeOBBRSS ++class ShapeMeshConservativeAdvancementTraversalNodeOBBRSS + : public ShapeMeshConservativeAdvancementTraversalNode< + Shape, OBBRSS, NarrowPhaseSolver> + { +diff --git a/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node-inl.h b/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node-inl.h +index cdf8c8d..c059ed1 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node-inl.h +@@ -108,7 +108,6 @@ bool ShapeMeshDistanceTraversalNode::canStop(S c) + + //============================================================================== + template +-FCL_EXPORT + bool initialize( + ShapeMeshDistanceTraversalNode& node, + const Shape& model1, +@@ -349,7 +348,6 @@ static bool setupShapeMeshDistanceOrientedNode(OrientedNode +-FCL_EXPORT + bool initialize(ShapeMeshDistanceTraversalNodeRSS& node, + const Shape& model1, const Transform3& tf1, + const BVHModel>& model2, const Transform3& tf2, +@@ -362,7 +360,6 @@ bool initialize(ShapeMeshDistanceTraversalNodeRSS& nod + + //============================================================================== + template +-FCL_EXPORT + bool initialize(ShapeMeshDistanceTraversalNodekIOS& node, + const Shape& model1, const Transform3& tf1, + const BVHModel>& model2, const Transform3& tf2, +@@ -375,7 +372,6 @@ bool initialize(ShapeMeshDistanceTraversalNodekIOS& no + + //============================================================================== + template +-FCL_EXPORT + bool initialize(ShapeMeshDistanceTraversalNodeOBBRSS& node, + const Shape& model1, const Transform3& tf1, + const BVHModel>& model2, const Transform3& tf2, +diff --git a/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node.h +index 438f205..1777b8a 100644 +--- a/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/distance/shape_mesh_distance_traversal_node.h +@@ -49,7 +49,7 @@ namespace detail + + /// @brief Traversal node for distance between shape and mesh + template +-class FCL_EXPORT ShapeMeshDistanceTraversalNode ++class ShapeMeshDistanceTraversalNode + : public ShapeBVHDistanceTraversalNode + { + public: +@@ -89,7 +89,7 @@ bool initialize( + bool refit_bottomup = false); + + template +-class FCL_EXPORT ShapeMeshDistanceTraversalNodeRSS ++class ShapeMeshDistanceTraversalNodeRSS + : public ShapeMeshDistanceTraversalNode< + Shape, RSS, NarrowPhaseSolver> + { +@@ -123,7 +123,7 @@ bool initialize( + DistanceResult& result); + + template +-class FCL_EXPORT ShapeMeshDistanceTraversalNodekIOS ++class ShapeMeshDistanceTraversalNodekIOS + : public ShapeMeshDistanceTraversalNode< + Shape, kIOS, NarrowPhaseSolver> + { +@@ -157,7 +157,7 @@ bool initialize( + DistanceResult& result); + + template +-class FCL_EXPORT ShapeMeshDistanceTraversalNodeOBBRSS ++class ShapeMeshDistanceTraversalNodeOBBRSS + : public ShapeMeshDistanceTraversalNode< + Shape, OBBRSS, NarrowPhaseSolver> + { +diff --git a/include/fcl/narrowphase/detail/traversal/octree/collision/mesh_octree_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/collision/mesh_octree_collision_traversal_node.h +index 2792dd2..f060a66 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/collision/mesh_octree_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/collision/mesh_octree_collision_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for mesh-octree collision + template +-class FCL_EXPORT MeshOcTreeCollisionTraversalNode ++class MeshOcTreeCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/collision/octree_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/collision/octree_collision_traversal_node.h +index 5420082..d51f77e 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/collision/octree_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/collision/octree_collision_traversal_node.h +@@ -55,7 +55,7 @@ namespace detail + + /// @brief Traversal node for octree collision + template +-class FCL_EXPORT OcTreeCollisionTraversalNode ++class OcTreeCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/collision/octree_mesh_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/collision/octree_mesh_collision_traversal_node.h +index a5b904c..0a8980d 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/collision/octree_mesh_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/collision/octree_mesh_collision_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for octree-mesh collision + template +-class FCL_EXPORT OcTreeMeshCollisionTraversalNode ++class OcTreeMeshCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/collision/octree_shape_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/collision/octree_shape_collision_traversal_node.h +index 4668dd1..71c7a72 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/collision/octree_shape_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/collision/octree_shape_collision_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for octree-shape collision + template +-class FCL_EXPORT OcTreeShapeCollisionTraversalNode ++class OcTreeShapeCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/collision/shape_octree_collision_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/collision/shape_octree_collision_traversal_node.h +index c08ddcc..002e5b6 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/collision/shape_octree_collision_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/collision/shape_octree_collision_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for shape-octree collision + template +-class FCL_EXPORT ShapeOcTreeCollisionTraversalNode ++class ShapeOcTreeCollisionTraversalNode + : public CollisionTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/distance/mesh_octree_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/distance/mesh_octree_distance_traversal_node.h +index b299e78..cafb22e 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/distance/mesh_octree_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/distance/mesh_octree_distance_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for mesh-octree distance + template +-class FCL_EXPORT MeshOcTreeDistanceTraversalNode ++class MeshOcTreeDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/distance/octree_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/distance/octree_distance_traversal_node.h +index fcef5cc..39b75c5 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/distance/octree_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/distance/octree_distance_traversal_node.h +@@ -55,7 +55,7 @@ namespace detail + + /// @brief Traversal node for octree distance + template +-class FCL_EXPORT OcTreeDistanceTraversalNode ++class OcTreeDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/distance/octree_mesh_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/distance/octree_mesh_distance_traversal_node.h +index c1a8cc2..726309b 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/distance/octree_mesh_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/distance/octree_mesh_distance_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for octree-mesh distance + template +-class FCL_EXPORT OcTreeMeshDistanceTraversalNode ++class OcTreeMeshDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/distance/octree_shape_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/distance/octree_shape_distance_traversal_node.h +index bf7abd9..1cad7e1 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/distance/octree_shape_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/distance/octree_shape_distance_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for octree-shape distance + template +-class FCL_EXPORT OcTreeShapeDistanceTraversalNode ++class OcTreeShapeDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/distance/shape_octree_distance_traversal_node.h b/include/fcl/narrowphase/detail/traversal/octree/distance/shape_octree_distance_traversal_node.h +index 8b731e1..3e4041e 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/distance/shape_octree_distance_traversal_node.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/distance/shape_octree_distance_traversal_node.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Traversal node for shape-octree distance + template +-class FCL_EXPORT ShapeOcTreeDistanceTraversalNode ++class ShapeOcTreeDistanceTraversalNode + : public DistanceTraversalNodeBase + { + public: +diff --git a/include/fcl/narrowphase/detail/traversal/octree/octree_solver.h b/include/fcl/narrowphase/detail/traversal/octree/octree_solver.h +index a10d835..961103a 100644 +--- a/include/fcl/narrowphase/detail/traversal/octree/octree_solver.h ++++ b/include/fcl/narrowphase/detail/traversal/octree/octree_solver.h +@@ -56,7 +56,7 @@ namespace detail + + /// @brief Algorithms for collision related with octree + template +-class FCL_EXPORT OcTreeSolver ++class OcTreeSolver + { + private: + +diff --git a/include/fcl/narrowphase/detail/traversal/traversal_node_base-inl.h b/include/fcl/narrowphase/detail/traversal/traversal_node_base-inl.h +index 96d849b..9ff776e 100644 +--- a/include/fcl/narrowphase/detail/traversal/traversal_node_base-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/traversal_node_base-inl.h +@@ -50,7 +50,7 @@ namespace detail + + //============================================================================== + extern template +-class FCL_EXPORT TraversalNodeBase; ++class TraversalNodeBase; + + //============================================================================== + template +diff --git a/include/fcl/narrowphase/detail/traversal/traversal_node_base.h b/include/fcl/narrowphase/detail/traversal/traversal_node_base.h +index 2f3b187..abcc4eb 100644 +--- a/include/fcl/narrowphase/detail/traversal/traversal_node_base.h ++++ b/include/fcl/narrowphase/detail/traversal/traversal_node_base.h +@@ -48,7 +48,7 @@ namespace detail + + /// @brief Node structure encoding the information required for traversal. + template +-class FCL_EXPORT TraversalNodeBase ++class TraversalNodeBase + { + public: + virtual ~TraversalNodeBase(); +diff --git a/include/fcl/narrowphase/detail/traversal/traversal_recurse-inl.h b/include/fcl/narrowphase/detail/traversal/traversal_recurse-inl.h +index 1c46c1c..5d9704b 100644 +--- a/include/fcl/narrowphase/detail/traversal/traversal_recurse-inl.h ++++ b/include/fcl/narrowphase/detail/traversal/traversal_recurse-inl.h +@@ -80,7 +80,6 @@ void propagateBVHFrontListCollisionRecurse(CollisionTraversalNodeBase* n + + //============================================================================== + template +-FCL_EXPORT + void collisionRecurse(CollisionTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list) + { + bool l1 = node->isFirstNodeLeaf(b1); +@@ -130,7 +129,6 @@ void collisionRecurse(CollisionTraversalNodeBase* node, int b1, int b2, BVHFr + + //============================================================================== + template +-FCL_EXPORT + void collisionRecurse(MeshCollisionTraversalNodeOBB* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list) + { + bool l1 = node->isFirstNodeLeaf(b1); +@@ -216,7 +214,6 @@ void collisionRecurse(MeshCollisionTraversalNodeOBB* node, int b1, int b2, co + + //============================================================================== + template +-FCL_EXPORT + void collisionRecurse(MeshCollisionTraversalNodeRSS* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list) + { + FCL_UNUSED(node); +@@ -234,7 +231,6 @@ void collisionRecurse(MeshCollisionTraversalNodeRSS* node, int b1, int b2, co + * Make sure node is set correctly so that the first and second tree are the same + */ + template +-FCL_EXPORT + void selfCollisionRecurse(CollisionTraversalNodeBase* node, int b, BVHFrontList* front_list) + { + bool l = node->isFirstNodeLeaf(b); +@@ -255,7 +251,6 @@ void selfCollisionRecurse(CollisionTraversalNodeBase* node, int b, BVHFrontLi + + //============================================================================== + template +-FCL_EXPORT + void distanceRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list) + { + bool l1 = node->isFirstNodeLeaf(b1); +@@ -318,7 +313,7 @@ void distanceRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFron + //============================================================================== + /** @brief Bounding volume test structure */ + template +-struct FCL_EXPORT BVT ++struct BVT + { + /** @brief distance between bvs */ + S d; +@@ -330,7 +325,7 @@ struct FCL_EXPORT BVT + //============================================================================== + /** @brief Comparer between two BVT */ + template +-struct FCL_EXPORT BVT_Comparer ++struct BVT_Comparer + { + bool operator() (const BVT& lhs, const BVT& rhs) const + { +@@ -340,7 +335,7 @@ struct FCL_EXPORT BVT_Comparer + + //============================================================================== + template +-struct FCL_EXPORT BVTQ ++struct BVTQ + { + BVTQ() : qsize(2) {} + +@@ -382,7 +377,6 @@ struct FCL_EXPORT BVTQ + + //============================================================================== + template +-FCL_EXPORT + void distanceQueueRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list, int qsize) + { + BVTQ bvtq; +@@ -461,7 +455,6 @@ void distanceQueueRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BV + + //============================================================================== + template +-FCL_EXPORT + void propagateBVHFrontListCollisionRecurse(CollisionTraversalNodeBase* node, BVHFrontList* front_list) + { + BVHFrontList::iterator front_iter; +diff --git a/include/fcl/narrowphase/detail/traversal/traversal_recurse.h b/include/fcl/narrowphase/detail/traversal/traversal_recurse.h +index d586c7e..cb9316f 100644 +--- a/include/fcl/narrowphase/detail/traversal/traversal_recurse.h ++++ b/include/fcl/narrowphase/detail/traversal/traversal_recurse.h +@@ -52,37 +52,30 @@ namespace detail + + /// @brief Recurse function for collision + template +-FCL_EXPORT + void collisionRecurse(CollisionTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list); + + /// @brief Recurse function for collision, specialized for OBB type + template +-FCL_EXPORT + void collisionRecurse(MeshCollisionTraversalNodeOBB* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list); + + /// @brief Recurse function for collision, specialized for RSS type + template +-FCL_EXPORT + void collisionRecurse(MeshCollisionTraversalNodeRSS* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list); + + /// @brief Recurse function for self collision. Make sure node is set correctly so that the first and second tree are the same + template +-FCL_EXPORT + void selfCollisionRecurse(CollisionTraversalNodeBase* node, int b, BVHFrontList* front_list); + + /// @brief Recurse function for distance + template +-FCL_EXPORT + void distanceRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list); + + /// @brief Recurse function for distance, using queue acceleration + template +-FCL_EXPORT + void distanceQueueRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list, int qsize); + + /// @brief Recurse function for front list propagation + template +-FCL_EXPORT + void propagateBVHFrontListCollisionRecurse(CollisionTraversalNodeBase* node, BVHFrontList* front_list); + + } // namespace detail +diff --git a/include/fcl/narrowphase/distance.h b/include/fcl/narrowphase/distance.h +index 7629d26..cda024f 100644 +--- a/include/fcl/narrowphase/distance.h ++++ b/include/fcl/narrowphase/distance.h +@@ -49,13 +49,11 @@ namespace fcl + /// @brief Main distance interface: given two collision objects, and the requirements for contacts, including whether return the nearest points, this function performs the distance between them. + /// Return value is the minimum distance generated between the two objects. + template +-FCL_EXPORT + S distance( + const CollisionObject* o1, const CollisionObject* o2, + const DistanceRequest& request, DistanceResult& result); + + template +-FCL_EXPORT + S distance( + const CollisionGeometry* o1, const Transform3& tf1, + const CollisionGeometry* o2, const Transform3& tf2, +diff --git a/include/fcl/narrowphase/distance_request.h b/include/fcl/narrowphase/distance_request.h +index c157699..8dc92a1 100644 +--- a/include/fcl/narrowphase/distance_request.h ++++ b/include/fcl/narrowphase/distance_request.h +@@ -49,7 +49,7 @@ struct DistanceResult; + + /// @brief request to the distance computation + template +-struct FCL_EXPORT DistanceRequest ++struct DistanceRequest + { + /// @brief whether to return the nearest points + bool enable_nearest_points; +diff --git a/include/fcl/narrowphase/distance_result-inl.h b/include/fcl/narrowphase/distance_result-inl.h +index 424cffd..5d87377 100644 +--- a/include/fcl/narrowphase/distance_result-inl.h ++++ b/include/fcl/narrowphase/distance_result-inl.h +@@ -49,7 +49,6 @@ struct DistanceResult; + + //============================================================================== + template +-FCL_EXPORT + DistanceResult::DistanceResult(S min_distance_) + : min_distance(min_distance_), + o1(nullptr), +@@ -62,7 +61,6 @@ DistanceResult::DistanceResult(S min_distance_) + + //============================================================================== + template +-FCL_EXPORT + void DistanceResult::update( + S distance, + const CollisionGeometry* o1_, +@@ -82,7 +80,6 @@ void DistanceResult::update( + + //============================================================================== + template +-FCL_EXPORT + void DistanceResult::update( + S distance, + const CollisionGeometry* o1_, +@@ -106,7 +103,6 @@ void DistanceResult::update( + + //============================================================================== + template +-FCL_EXPORT + void DistanceResult::update(const DistanceResult& other_result) + { + if(min_distance > other_result.min_distance) +@@ -123,7 +119,6 @@ void DistanceResult::update(const DistanceResult& other_result) + + //============================================================================== + template +-FCL_EXPORT + void DistanceResult::clear() + { + min_distance = std::numeric_limits::max(); +diff --git a/include/fcl/narrowphase/distance_result.h b/include/fcl/narrowphase/distance_result.h +index 97373a3..66ec7c2 100644 +--- a/include/fcl/narrowphase/distance_result.h ++++ b/include/fcl/narrowphase/distance_result.h +@@ -48,7 +48,7 @@ class CollisionGeometry; + + /// @brief distance result + template +-struct FCL_EXPORT DistanceResult ++struct DistanceResult + { + public: + +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 425724e..f5d7c5e 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -47,6 +47,10 @@ else() + add_library(${PROJECT_NAME} SHARED ${FCL_HEADERS} ${FCL_SOURCE_CODE}) + endif() + ++set_target_properties(${PROJECT_NAME} PROPERTIES ++ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ++) ++ + # Be sure to pass to the consumer the set of SIMD used in the compilation + target_compile_options(${PROJECT_NAME} PUBLIC ${SSE_FLAGS}) + +diff --git a/src/broadphase/broadphase_SSaP.cpp b/src/broadphase/broadphase_SSaP.cpp +index dc92716..4690e1d 100644 +--- a/src/broadphase/broadphase_SSaP.cpp ++++ b/src/broadphase/broadphase_SSaP.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SSaPCollisionManager; ++class FCL_EXPORT SSaPCollisionManager; + + } // namespace +diff --git a/src/broadphase/broadphase_SaP.cpp b/src/broadphase/broadphase_SaP.cpp +index cee8117..4810e65 100644 +--- a/src/broadphase/broadphase_SaP.cpp ++++ b/src/broadphase/broadphase_SaP.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SaPCollisionManager; ++class FCL_EXPORT SaPCollisionManager; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_bruteforce.cpp b/src/broadphase/broadphase_bruteforce.cpp +index a8f5339..4cc2eda 100644 +--- a/src/broadphase/broadphase_bruteforce.cpp ++++ b/src/broadphase/broadphase_bruteforce.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class NaiveCollisionManager; ++class FCL_EXPORT NaiveCollisionManager; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_collision_manager.cpp b/src/broadphase/broadphase_collision_manager.cpp +index 3cecc24..2f6d6df 100644 +--- a/src/broadphase/broadphase_collision_manager.cpp ++++ b/src/broadphase/broadphase_collision_manager.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class BroadPhaseCollisionManager; ++class FCL_EXPORT BroadPhaseCollisionManager; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_continuous_collision_manager.cpp b/src/broadphase/broadphase_continuous_collision_manager.cpp +index d06760a..c8171db 100644 +--- a/src/broadphase/broadphase_continuous_collision_manager.cpp ++++ b/src/broadphase/broadphase_continuous_collision_manager.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class BroadPhaseContinuousCollisionManager; ++class FCL_EXPORT BroadPhaseContinuousCollisionManager; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_dynamic_AABB_tree.cpp b/src/broadphase/broadphase_dynamic_AABB_tree.cpp +index 1da6ca3..2169ba8 100644 +--- a/src/broadphase/broadphase_dynamic_AABB_tree.cpp ++++ b/src/broadphase/broadphase_dynamic_AABB_tree.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class DynamicAABBTreeCollisionManager; ++class FCL_EXPORT DynamicAABBTreeCollisionManager; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp b/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp +index 515feda..9ed47f5 100644 +--- a/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp ++++ b/src/broadphase/broadphase_dynamic_AABB_tree_array.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class DynamicAABBTreeCollisionManager_Array; ++class FCL_EXPORT DynamicAABBTreeCollisionManager_Array; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_interval_tree.cpp b/src/broadphase/broadphase_interval_tree.cpp +index 3567fb1..d038b48 100644 +--- a/src/broadphase/broadphase_interval_tree.cpp ++++ b/src/broadphase/broadphase_interval_tree.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class IntervalTreeCollisionManager; ++class FCL_EXPORT IntervalTreeCollisionManager; + + } // namespace fcl +diff --git a/src/broadphase/broadphase_spatialhash.cpp b/src/broadphase/broadphase_spatialhash.cpp +index 3a9d90e..1b955bf 100644 +--- a/src/broadphase/broadphase_spatialhash.cpp ++++ b/src/broadphase/broadphase_spatialhash.cpp +@@ -41,7 +41,7 @@ namespace fcl + { + + template +-class SpatialHashingCollisionManager< ++class FCL_EXPORT SpatialHashingCollisionManager< + double, + detail::SimpleHashTable< + AABB, CollisionObject*, detail::SpatialHash>>; +diff --git a/src/broadphase/detail/interval_tree.cpp b/src/broadphase/detail/interval_tree.cpp +index 28419ff..e6b7a14 100644 +--- a/src/broadphase/detail/interval_tree.cpp ++++ b/src/broadphase/detail/interval_tree.cpp +@@ -44,10 +44,10 @@ namespace detail + { + + template +-struct it_recursion_node; ++struct FCL_EXPORT it_recursion_node; + + template +-class IntervalTree; ++class FCL_EXPORT IntervalTree; + + } // namespace detail + } // namespace fcl +diff --git a/src/broadphase/detail/interval_tree_node.cpp b/src/broadphase/detail/interval_tree_node.cpp +index b3779b7..432f857 100644 +--- a/src/broadphase/detail/interval_tree_node.cpp ++++ b/src/broadphase/detail/interval_tree_node.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-class IntervalTreeNode; ++class FCL_EXPORT IntervalTreeNode; + + } // namespace detail + } // namespace fcl +diff --git a/src/broadphase/detail/morton.cpp b/src/broadphase/detail/morton.cpp +index fa0419f..4bc9b89 100644 +--- a/src/broadphase/detail/morton.cpp ++++ b/src/broadphase/detail/morton.cpp +@@ -47,7 +47,7 @@ namespace detail + + //============================================================================== + template +-uint32 quantize(double x, uint32 n); ++FCL_EXPORT uint32 quantize(double x, uint32 n); + + //============================================================================== + uint32 morton_code(uint32 x, uint32 y, uint32 z) +@@ -84,14 +84,6 @@ uint64 morton_code60(uint32 x, uint32 y, uint32 z) + | uint64(morton_code(lo_x, lo_y, lo_z)); + } + +-//============================================================================== +-template +-struct morton_functor; +- +-//============================================================================== +-template +-struct morton_functor; +- + } // namespace detail + /// @endcond + } // namespace fcl +diff --git a/src/broadphase/detail/simple_interval.cpp b/src/broadphase/detail/simple_interval.cpp +index 0271d9b..e6715b0 100644 +--- a/src/broadphase/detail/simple_interval.cpp ++++ b/src/broadphase/detail/simple_interval.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct SimpleInterval; ++struct FCL_EXPORT SimpleInterval; + + } // namespace detail + } // namespace fcl +diff --git a/src/broadphase/detail/spatial_hash.cpp b/src/broadphase/detail/spatial_hash.cpp +index 01a8e25..b0d84ff 100644 +--- a/src/broadphase/detail/spatial_hash.cpp ++++ b/src/broadphase/detail/spatial_hash.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct SpatialHash; ++struct FCL_EXPORT SpatialHash; + + } // namespace detail + } // namespace fcl +diff --git a/src/geometry/bvh/BVH_utility.cpp b/src/geometry/bvh/BVH_utility.cpp +index bfcc8e8..9c4d30f 100644 +--- a/src/geometry/bvh/BVH_utility.cpp ++++ b/src/geometry/bvh/BVH_utility.cpp +@@ -42,12 +42,12 @@ namespace fcl + + //============================================================================== + template +-void BVHExpand( ++FCL_EXPORT void BVHExpand( + BVHModel>& model, const Variance3* ucs, double r); + + //============================================================================== + template +-void BVHExpand( ++FCL_EXPORT void BVHExpand( + BVHModel>& model, const Variance3* ucs, double r); + + } // namespace fcl +diff --git a/src/geometry/collision_geometry.cpp b/src/geometry/collision_geometry.cpp +index a898ecd..00de42a 100644 +--- a/src/geometry/collision_geometry.cpp ++++ b/src/geometry/collision_geometry.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class CollisionGeometry; ++class FCL_EXPORT CollisionGeometry; + + } // namespace fcl +diff --git a/src/geometry/octree/octree.cpp b/src/geometry/octree/octree.cpp +index 1e392e9..85e27c2 100644 +--- a/src/geometry/octree/octree.cpp ++++ b/src/geometry/octree/octree.cpp +@@ -46,11 +46,11 @@ namespace fcl + + //============================================================================== + template +-class OcTree; ++class FCL_EXPORT OcTree; + + //============================================================================== + template +-void computeChildBV(const AABB& root_bv, unsigned int i, AABB& child_bv); ++FCL_EXPORT void computeChildBV(const AABB& root_bv, unsigned int i, AABB& child_bv); + + } // namespace fcl + +diff --git a/src/geometry/shape/box.cpp b/src/geometry/shape/box.cpp +index 9c96f1c..dee9d77 100644 +--- a/src/geometry/shape/box.cpp ++++ b/src/geometry/shape/box.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Box; ++class FCL_EXPORT Box; + + } // namespace fcl +diff --git a/src/geometry/shape/capsule.cpp b/src/geometry/shape/capsule.cpp +index db46b66..0eaea73 100644 +--- a/src/geometry/shape/capsule.cpp ++++ b/src/geometry/shape/capsule.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Capsule; ++class FCL_EXPORT Capsule; + + } // namespace fcl +diff --git a/src/geometry/shape/cone.cpp b/src/geometry/shape/cone.cpp +index f201ebb..e4de4f6 100644 +--- a/src/geometry/shape/cone.cpp ++++ b/src/geometry/shape/cone.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Cone; ++class FCL_EXPORT Cone; + + } // namespace fcl +diff --git a/src/geometry/shape/convex.cpp b/src/geometry/shape/convex.cpp +index 4242923..dbe3161 100644 +--- a/src/geometry/shape/convex.cpp ++++ b/src/geometry/shape/convex.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Convex; ++class FCL_EXPORT Convex; + + } // namespace fcl +diff --git a/src/geometry/shape/cylinder.cpp b/src/geometry/shape/cylinder.cpp +index 99933f9..5756720 100644 +--- a/src/geometry/shape/cylinder.cpp ++++ b/src/geometry/shape/cylinder.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Cylinder; ++class FCL_EXPORT Cylinder; + + } // namespace fcl +diff --git a/src/geometry/shape/ellipsoid.cpp b/src/geometry/shape/ellipsoid.cpp +index d30baea..355ed24 100644 +--- a/src/geometry/shape/ellipsoid.cpp ++++ b/src/geometry/shape/ellipsoid.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Ellipsoid; ++class FCL_EXPORT Ellipsoid; + + } // namespace fcl +diff --git a/src/geometry/shape/halfspace.cpp b/src/geometry/shape/halfspace.cpp +index f01e946..757ef47 100644 +--- a/src/geometry/shape/halfspace.cpp ++++ b/src/geometry/shape/halfspace.cpp +@@ -41,9 +41,9 @@ namespace fcl + { + + template +-class Halfspace; ++class FCL_EXPORT Halfspace; + + template +-Halfspace transform(const Halfspace& a, const Transform3& tf); ++FCL_EXPORT Halfspace transform(const Halfspace& a, const Transform3& tf); + + } // namespace fcl +diff --git a/src/geometry/shape/plane.cpp b/src/geometry/shape/plane.cpp +index e61fa63..b00bb86 100644 +--- a/src/geometry/shape/plane.cpp ++++ b/src/geometry/shape/plane.cpp +@@ -42,10 +42,10 @@ namespace fcl + + //============================================================================== + template +-class Plane; ++class FCL_EXPORT Plane; + + //============================================================================== + template +-Plane transform(const Plane& a, const Transform3& tf); ++FCL_EXPORT Plane transform(const Plane& a, const Transform3& tf); + + } // namespace fcl +diff --git a/src/geometry/shape/shape_base.cpp b/src/geometry/shape/shape_base.cpp +index 179d73e..9570395 100644 +--- a/src/geometry/shape/shape_base.cpp ++++ b/src/geometry/shape/shape_base.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class ShapeBase; ++class FCL_EXPORT ShapeBase; + + } // namespace fcl +diff --git a/src/geometry/shape/sphere.cpp b/src/geometry/shape/sphere.cpp +index b8a8578..26a314f 100644 +--- a/src/geometry/shape/sphere.cpp ++++ b/src/geometry/shape/sphere.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Sphere; ++class FCL_EXPORT Sphere; + + } // namespace fcl +diff --git a/src/geometry/shape/triangle_p.cpp b/src/geometry/shape/triangle_p.cpp +index 86546be..e0bf85b 100644 +--- a/src/geometry/shape/triangle_p.cpp ++++ b/src/geometry/shape/triangle_p.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class TriangleP; ++class FCL_EXPORT TriangleP; + + } // namespace fcl +diff --git a/src/geometry/shape/utility.cpp b/src/geometry/shape/utility.cpp +index a64ee25..abce2a6 100644 +--- a/src/geometry/shape/utility.cpp ++++ b/src/geometry/shape/utility.cpp +@@ -41,67 +41,67 @@ namespace fcl { + + //============================================================================== + template +-void constructBox(const AABB& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const AABB& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const OBB& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const OBB& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const OBBRSS& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const OBBRSS& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const kIOS& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const kIOS& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const RSS& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const RSS& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const KDOP& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const KDOP& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const KDOP& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const KDOP& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const KDOP& bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const KDOP& bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const AABB& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const AABB& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const OBB& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const OBB& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const OBBRSS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const OBBRSS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const kIOS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const kIOS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const RSS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const RSS& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + template +-void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); ++FCL_EXPORT void constructBox(const KDOP& bv, const Transform3& tf_bv, Box& box, Transform3& tf); + + //============================================================================== + namespace detail { +@@ -109,119 +109,119 @@ namespace detail { + + //============================================================================== + template +-struct ComputeBVImpl, Box>; ++struct FCL_EXPORT ComputeBVImpl, Box>; + + //============================================================================== + template +-struct ComputeBVImpl, Box>; ++struct FCL_EXPORT ComputeBVImpl, Box>; + + //============================================================================== + template +-struct ComputeBVImpl, Capsule>; ++struct FCL_EXPORT ComputeBVImpl, Capsule>; + + //============================================================================== + template +-struct ComputeBVImpl, Capsule>; ++struct FCL_EXPORT ComputeBVImpl, Capsule>; + + //============================================================================== + template +-struct ComputeBVImpl, Cone>; ++struct FCL_EXPORT ComputeBVImpl, Cone>; + + //============================================================================== + template +-struct ComputeBVImpl, Cone>; ++struct FCL_EXPORT ComputeBVImpl, Cone>; + + //============================================================================== + template +-struct ComputeBVImpl, Cylinder>; ++struct FCL_EXPORT ComputeBVImpl, Cylinder>; + + //============================================================================== + template +-struct ComputeBVImpl, Cylinder>; ++struct FCL_EXPORT ComputeBVImpl, Cylinder>; + + //============================================================================== + template +-struct ComputeBVImpl, Ellipsoid>; ++struct FCL_EXPORT ComputeBVImpl, Ellipsoid>; + + //============================================================================== + template +-struct ComputeBVImpl, Ellipsoid>; ++struct FCL_EXPORT ComputeBVImpl, Ellipsoid>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Halfspace>; ++struct FCL_EXPORT ComputeBVImpl, Halfspace>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Plane>; ++struct FCL_EXPORT ComputeBVImpl, Plane>; + + //============================================================================== + template +-struct ComputeBVImpl, Sphere>; ++struct FCL_EXPORT ComputeBVImpl, Sphere>; + + //============================================================================== + template +-struct ComputeBVImpl, Sphere>; ++struct FCL_EXPORT ComputeBVImpl, Sphere>; + + //============================================================================== + template +-struct ComputeBVImpl, TriangleP>; ++struct FCL_EXPORT ComputeBVImpl, TriangleP>; + + //============================================================================== + } // namespace detail +diff --git a/src/math/bv/AABB.cpp b/src/math/bv/AABB.cpp +index a7c3824..2371037 100644 +--- a/src/math/bv/AABB.cpp ++++ b/src/math/bv/AABB.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class AABB; ++class FCL_EXPORT AABB; + + } // namespace fcl +diff --git a/src/math/bv/OBB.cpp b/src/math/bv/OBB.cpp +index 1cfa1f6..db8eec7 100644 +--- a/src/math/bv/OBB.cpp ++++ b/src/math/bv/OBB.cpp +@@ -42,23 +42,23 @@ namespace fcl + + //============================================================================== + template +-class OBB; ++class FCL_EXPORT OBB; + + //============================================================================== + template +-void computeVertices(const OBB& b, Vector3 vertices[8]); ++FCL_EXPORT void computeVertices(const OBB& b, Vector3 vertices[8]); + + //============================================================================== + template +-OBB merge_largedist(const OBB& b1, const OBB& b2); ++FCL_EXPORT OBB merge_largedist(const OBB& b1, const OBB& b2); + + //============================================================================== + template +-OBB merge_smalldist(const OBB& b1, const OBB& b2); ++FCL_EXPORT OBB merge_smalldist(const OBB& b1, const OBB& b2); + + //============================================================================== + template +-bool obbDisjoint( ++FCL_EXPORT bool obbDisjoint( + const Matrix3& B, + const Vector3& T, + const Vector3& a, +@@ -66,7 +66,7 @@ bool obbDisjoint( + + //============================================================================== + template +-bool obbDisjoint( ++FCL_EXPORT bool obbDisjoint( + const Transform3& tf, + const Vector3& a, + const Vector3& b); +diff --git a/src/math/bv/OBBRSS.cpp b/src/math/bv/OBBRSS.cpp +index 10cb794..c67c509 100644 +--- a/src/math/bv/OBBRSS.cpp ++++ b/src/math/bv/OBBRSS.cpp +@@ -42,10 +42,10 @@ namespace fcl + + //============================================================================== + template +-class OBBRSS; ++class FCL_EXPORT OBBRSS; + + //============================================================================== + template +-OBBRSS translate(const OBBRSS& bv, const Vector3& t); ++FCL_EXPORT OBBRSS translate(const OBBRSS& bv, const Vector3& t); + + } // namespace fcl +diff --git a/src/math/bv/RSS.cpp b/src/math/bv/RSS.cpp +index c7db037..b8960c6 100644 +--- a/src/math/bv/RSS.cpp ++++ b/src/math/bv/RSS.cpp +@@ -42,15 +42,15 @@ namespace fcl + + //============================================================================== + template +-class RSS; ++class FCL_EXPORT RSS; + + //============================================================================== + template +-void clipToRange(double& val, double a, double b); ++FCL_EXPORT void clipToRange(double& val, double a, double b); + + //============================================================================== + template +-void segCoords( ++FCL_EXPORT void segCoords( + double& t, + double& u, + double a, +@@ -61,7 +61,7 @@ void segCoords( + + //============================================================================== + template +-bool inVoronoi( ++FCL_EXPORT bool inVoronoi( + double a, + double b, + double Anorm_dot_B, +@@ -72,7 +72,7 @@ bool inVoronoi( + + //============================================================================== + template +-double rectDistance( ++FCL_EXPORT double rectDistance( + const Matrix3& Rab, + const Vector3& Tab, + const double a[2], +@@ -82,7 +82,7 @@ double rectDistance( + + //============================================================================== + template +-double rectDistance( ++FCL_EXPORT double rectDistance( + const Transform3& tfab, + const double a[2], + const double b[2], +@@ -91,6 +91,6 @@ double rectDistance( + + //============================================================================== + template +-RSS translate(const RSS& bv, const Vector3& t); ++FCL_EXPORT RSS translate(const RSS& bv, const Vector3& t); + + } // namespace fcl +diff --git a/src/math/bv/kDOP.cpp b/src/math/bv/kDOP.cpp +index 8879a44..44415dc 100644 +--- a/src/math/bv/kDOP.cpp ++++ b/src/math/bv/kDOP.cpp +@@ -42,34 +42,34 @@ namespace fcl + + //============================================================================== + template +-class KDOP; ++class FCL_EXPORT KDOP; + + //============================================================================== + template +-class KDOP; ++class FCL_EXPORT KDOP; + + //============================================================================== + template +-class KDOP; ++class FCL_EXPORT KDOP; + + //============================================================================== + template +-void minmax(double a, double b, double& minv, double& maxv); ++FCL_EXPORT void minmax(double a, double b, double& minv, double& maxv); + + //============================================================================== + template +-void minmax(double p, double& minv, double& maxv); ++FCL_EXPORT void minmax(double p, double& minv, double& maxv); + + //============================================================================== + template +-void getDistances(const Vector3& p, double* d); ++FCL_EXPORT void getDistances(const Vector3& p, double* d); + + //============================================================================== + template +-void getDistances(const Vector3& p, double* d); ++FCL_EXPORT void getDistances(const Vector3& p, double* d); + + //============================================================================== + template +-void getDistances(const Vector3& p, double* d); ++FCL_EXPORT void getDistances(const Vector3& p, double* d); + + } // namespace fcl +diff --git a/src/math/bv/kIOS.cpp b/src/math/bv/kIOS.cpp +index 4c17b92..589f182 100644 +--- a/src/math/bv/kIOS.cpp ++++ b/src/math/bv/kIOS.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class kIOS; ++class FCL_EXPORT kIOS; + + } // namespace fcl +diff --git a/src/math/bv/utility.cpp b/src/math/bv/utility.cpp +index d2e44a9..c58b067 100644 +--- a/src/math/bv/utility.cpp ++++ b/src/math/bv/utility.cpp +@@ -46,23 +46,23 @@ namespace OBB_fit_functions { + + //============================================================================== + template +-void fit1(const Vector3d* const ps, OBB& bv); ++FCL_EXPORT void fit1(const Vector3d* const ps, OBB& bv); + + //============================================================================== + template +-void fit2(const Vector3d* const ps, OBB& bv); ++FCL_EXPORT void fit2(const Vector3d* const ps, OBB& bv); + + //============================================================================== + template +-void fit3(const Vector3d* const ps, OBB& bv); ++FCL_EXPORT void fit3(const Vector3d* const ps, OBB& bv); + + //============================================================================== + template +-void fit6(const Vector3d* const ps, OBB& bv); ++FCL_EXPORT void fit6(const Vector3d* const ps, OBB& bv); + + //============================================================================== + template +-void fitn(const Vector3d* const ps, int n, OBB& bv); ++FCL_EXPORT void fitn(const Vector3d* const ps, int n, OBB& bv); + + //============================================================================== + } // namespace OBB_fit_functions +@@ -74,23 +74,23 @@ namespace RSS_fit_functions { + + //============================================================================== + template +-void fit1(const Vector3d* const ps, RSS& bv); ++FCL_EXPORT void fit1(const Vector3d* const ps, RSS& bv); + + //============================================================================== + template +-void fit2(const Vector3d* const ps, RSS& bv); ++FCL_EXPORT void fit2(const Vector3d* const ps, RSS& bv); + + //============================================================================== + template +-void fit3(const Vector3d* const ps, RSS& bv); ++FCL_EXPORT void fit3(const Vector3d* const ps, RSS& bv); + + //============================================================================== + template +-void fit6(const Vector3d* const ps, RSS& bv); ++FCL_EXPORT void fit6(const Vector3d* const ps, RSS& bv); + + //============================================================================== + template +-void fitn(const Vector3d* const ps, int n, RSS& bv); ++FCL_EXPORT void fitn(const Vector3d* const ps, int n, RSS& bv); + + //============================================================================== + } // namespace RSS_fit_functions +@@ -102,19 +102,19 @@ namespace kIOS_fit_functions { + + //============================================================================== + template +-void fit1(const Vector3d* const ps, kIOS& bv); ++FCL_EXPORT void fit1(const Vector3d* const ps, kIOS& bv); + + //============================================================================== + template +-void fit2(const Vector3d* const ps, kIOS& bv); ++FCL_EXPORT void fit2(const Vector3d* const ps, kIOS& bv); + + //============================================================================== + template +-void fit3(const Vector3d* const ps, kIOS& bv); ++FCL_EXPORT void fit3(const Vector3d* const ps, kIOS& bv); + + //============================================================================== + template +-void fitn(const Vector3d* const ps, int n, kIOS& bv); ++FCL_EXPORT void fitn(const Vector3d* const ps, int n, kIOS& bv); + + //============================================================================== + } // namespace kIOS_fit_functions +@@ -126,19 +126,19 @@ namespace OBBRSS_fit_functions { + + //============================================================================== + template +-void fit1(const Vector3d* const ps, OBBRSS& bv); ++FCL_EXPORT void fit1(const Vector3d* const ps, OBBRSS& bv); + + //============================================================================== + template +-void fit2(const Vector3d* const ps, OBBRSS& bv); ++FCL_EXPORT void fit2(const Vector3d* const ps, OBBRSS& bv); + + //============================================================================== + template +-void fit3(const Vector3d* const ps, OBBRSS& bv); ++FCL_EXPORT void fit3(const Vector3d* const ps, OBBRSS& bv); + + //============================================================================== + template +-void fitn(const Vector3d* const ps, int n, OBBRSS& bv); ++FCL_EXPORT void fitn(const Vector3d* const ps, int n, OBBRSS& bv); + + //============================================================================== + } // namespace OBBRSS_fit_functions +@@ -146,55 +146,55 @@ void fitn(const Vector3d* const ps, int n, OBBRSS& bv); + + //============================================================================== + template +-struct Fitter>; ++FCL_EXPORT struct Fitter>; + + //============================================================================== + template +-struct Fitter>; ++FCL_EXPORT struct Fitter>; + + //============================================================================== + template +-struct Fitter>; ++FCL_EXPORT struct Fitter>; + + //============================================================================== + template +-struct Fitter>; ++FCL_EXPORT struct Fitter>; + + //============================================================================== + template +-class ConvertBVImpl, AABB>; ++FCL_EXPORT class ConvertBVImpl, AABB>; + + //============================================================================== + template +-class ConvertBVImpl, OBB>; ++FCL_EXPORT class ConvertBVImpl, OBB>; + + //============================================================================== + template +-class ConvertBVImpl, OBB>; ++FCL_EXPORT class ConvertBVImpl, OBB>; + + //============================================================================== + template +-class ConvertBVImpl, OBB>; ++FCL_EXPORT class ConvertBVImpl, OBB>; + + //============================================================================== + template +-class ConvertBVImpl, OBB>; ++FCL_EXPORT class ConvertBVImpl, OBB>; + + //============================================================================== + template +-class ConvertBVImpl, RSS>; ++FCL_EXPORT class ConvertBVImpl, RSS>; + + //============================================================================== + template +-class ConvertBVImpl, RSS>; ++FCL_EXPORT class ConvertBVImpl, RSS>; + + //============================================================================== + template +-class ConvertBVImpl, RSS>; ++FCL_EXPORT class ConvertBVImpl, RSS>; + + //============================================================================== + template +-class ConvertBVImpl, RSS>; ++FCL_EXPORT class ConvertBVImpl, RSS>; + + } // namespace detail + } // namespace fcl +diff --git a/src/math/constants.cpp b/src/math/constants.cpp +index a252bdb..560a276 100644 +--- a/src/math/constants.cpp ++++ b/src/math/constants.cpp +@@ -40,6 +40,6 @@ namespace fcl + { + + template +-struct constants; ++struct FCL_EXPORT constants; + + } // namespace fcl +diff --git a/src/math/detail/polysolver.cpp b/src/math/detail/polysolver.cpp +index 3aedfa0..9c39258 100644 +--- a/src/math/detail/polysolver.cpp ++++ b/src/math/detail/polysolver.cpp +@@ -43,7 +43,7 @@ namespace fcl + namespace detail { + + template +-class PolySolver; ++class FCL_EXPORT PolySolver; + + } // namespace detail + } // namespace fcl +diff --git a/src/math/detail/project.cpp b/src/math/detail/project.cpp +index e5bbe94..23571a3 100644 +--- a/src/math/detail/project.cpp ++++ b/src/math/detail/project.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-class Project; ++class FCL_EXPORT Project; + + } // namespace detail + } // namespace fcl +diff --git a/src/math/geometry.cpp b/src/math/geometry.cpp +index 577edcd..b4aec3a 100644 +--- a/src/math/geometry.cpp ++++ b/src/math/geometry.cpp +@@ -41,38 +41,38 @@ namespace fcl { + + //============================================================================== + template +-void normalize(Vector3d& v, bool* signal); ++FCL_EXPORT void normalize(Vector3d& v, bool* signal); + + //============================================================================== + template +-void hat(Matrix3d& mat, const Vector3d& vec); ++FCL_EXPORT void hat(Matrix3d& mat, const Vector3d& vec); + + //============================================================================== + template +-void eigen(const Matrix3d& m, Vector3d& dout, Matrix3d& vout); ++FCL_EXPORT void eigen(const Matrix3d& m, Vector3d& dout, Matrix3d& vout); + + //============================================================================== + template +-void eigen_old(const Matrix3d& m, Vector3d& dout, Matrix3d& vout); ++FCL_EXPORT void eigen_old(const Matrix3d& m, Vector3d& dout, Matrix3d& vout); + + //============================================================================== + template +-void axisFromEigen( ++FCL_EXPORT void axisFromEigen( + const Matrix3d& eigenV, const Vector3d& eigenS, Matrix3d& axis); + + //============================================================================== + template +-void axisFromEigen(const Matrix3d& eigenV, ++FCL_EXPORT void axisFromEigen(const Matrix3d& eigenV, + const Vector3d& eigenS, + Transform3d& tf); + + //============================================================================== + template +-Matrix3d generateCoordinateSystem(const Vector3d& x_axis); ++FCL_EXPORT Matrix3d generateCoordinateSystem(const Vector3d& x_axis); + + //============================================================================== + template +-void getRadiusAndOriginAndRectangleSize( ++FCL_EXPORT void getRadiusAndOriginAndRectangleSize( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +@@ -85,7 +85,7 @@ void getRadiusAndOriginAndRectangleSize( + + //============================================================================== + template +-void getRadiusAndOriginAndRectangleSize( ++FCL_EXPORT void getRadiusAndOriginAndRectangleSize( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +@@ -97,7 +97,7 @@ void getRadiusAndOriginAndRectangleSize( + + //============================================================================== + template +-void circumCircleComputation( ++FCL_EXPORT void circumCircleComputation( + const Vector3d& a, + const Vector3d& b, + const Vector3d& c, +@@ -106,7 +106,7 @@ void circumCircleComputation( + + //============================================================================== + template +-double maximumDistance( ++FCL_EXPORT double maximumDistance( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +@@ -116,7 +116,7 @@ double maximumDistance( + + //============================================================================== + template +-void getExtentAndCenter( ++FCL_EXPORT void getExtentAndCenter( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +@@ -128,7 +128,7 @@ void getExtentAndCenter( + + //============================================================================== + template +-void getCovariance( ++FCL_EXPORT void getCovariance( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +@@ -141,7 +141,7 @@ namespace detail { + + //============================================================================== + template +-double maximumDistance_mesh( ++FCL_EXPORT double maximumDistance_mesh( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +@@ -151,7 +151,7 @@ double maximumDistance_mesh( + + //============================================================================== + template +-double maximumDistance_pointcloud( ++FCL_EXPORT double maximumDistance_pointcloud( + const Vector3d* const ps, + const Vector3d* const ps2, + unsigned int* indices, +@@ -160,7 +160,7 @@ double maximumDistance_pointcloud( + + //============================================================================== + template +-void getExtentAndCenter_pointcloud( ++FCL_EXPORT void getExtentAndCenter_pointcloud( + const Vector3d* const ps, + const Vector3d* const ps2, + unsigned int* indices, +@@ -171,7 +171,7 @@ void getExtentAndCenter_pointcloud( + + //============================================================================== + template +-void getExtentAndCenter_mesh( ++FCL_EXPORT void getExtentAndCenter_mesh( + const Vector3d* const ps, + const Vector3d* const ps2, + Triangle* ts, +diff --git a/src/math/motion/interp_motion.cpp b/src/math/motion/interp_motion.cpp +index aa5e592..cb3c542 100644 +--- a/src/math/motion/interp_motion.cpp ++++ b/src/math/motion/interp_motion.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class InterpMotion; ++class FCL_EXPORT InterpMotion; + + } // namespace fcl +diff --git a/src/math/motion/motion_base.cpp b/src/math/motion/motion_base.cpp +index 981cc81..aeb4065 100644 +--- a/src/math/motion/motion_base.cpp ++++ b/src/math/motion/motion_base.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class MotionBase; ++class FCL_EXPORT MotionBase; + + } // namespace fcl +diff --git a/src/math/motion/screw_motion.cpp b/src/math/motion/screw_motion.cpp +index 65d1066..dffcbcf 100644 +--- a/src/math/motion/screw_motion.cpp ++++ b/src/math/motion/screw_motion.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class ScrewMotion; ++class FCL_EXPORT ScrewMotion; + + } // namespace fcl +diff --git a/src/math/motion/spline_motion.cpp b/src/math/motion/spline_motion.cpp +index 16601e2..b46de65 100644 +--- a/src/math/motion/spline_motion.cpp ++++ b/src/math/motion/spline_motion.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SplineMotion; ++class FCL_EXPORT SplineMotion; + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/interval.cpp b/src/math/motion/taylor_model/interval.cpp +index 236ec3d..a562db0 100644 +--- a/src/math/motion/taylor_model/interval.cpp ++++ b/src/math/motion/taylor_model/interval.cpp +@@ -43,14 +43,14 @@ namespace fcl + + //============================================================================== + template +-struct Interval; ++struct FCL_EXPORT Interval; + + //============================================================================== + template +-Interval bound(const Interval& i, double v); ++FCL_EXPORT Interval bound(const Interval& i, double v); + + //============================================================================== + template +-Interval bound(const Interval& i, const Interval& other); ++FCL_EXPORT Interval bound(const Interval& i, const Interval& other); + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/interval_matrix.cpp b/src/math/motion/taylor_model/interval_matrix.cpp +index 1bb0f92..b37e10b 100644 +--- a/src/math/motion/taylor_model/interval_matrix.cpp ++++ b/src/math/motion/taylor_model/interval_matrix.cpp +@@ -42,10 +42,10 @@ namespace fcl + + //============================================================================== + template +-struct IMatrix3; ++struct FCL_EXPORT IMatrix3; + + //============================================================================== + template +-IMatrix3 rotationConstrain(const IMatrix3& m); ++FCL_EXPORT IMatrix3 rotationConstrain(const IMatrix3& m); + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/interval_vector.cpp b/src/math/motion/taylor_model/interval_vector.cpp +index 9e216a6..bf2d55c 100644 +--- a/src/math/motion/taylor_model/interval_vector.cpp ++++ b/src/math/motion/taylor_model/interval_vector.cpp +@@ -42,14 +42,14 @@ namespace fcl + + //============================================================================== + template +-struct IVector3; ++struct FCL_EXPORT IVector3; + + //============================================================================== + template +-IVector3 bound(const IVector3& i, const Vector3& v); ++FCL_EXPORT IVector3 bound(const IVector3& i, const Vector3& v); + + //============================================================================== + template +-IVector3 bound(const IVector3& i, const IVector3& v); ++FCL_EXPORT IVector3 bound(const IVector3& i, const IVector3& v); + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/taylor_matrix.cpp b/src/math/motion/taylor_model/taylor_matrix.cpp +index baa926f..8fe3d71 100644 +--- a/src/math/motion/taylor_model/taylor_matrix.cpp ++++ b/src/math/motion/taylor_model/taylor_matrix.cpp +@@ -42,34 +42,34 @@ namespace fcl + + //============================================================================== + template +-class TMatrix3; ++class FCL_EXPORT TMatrix3; + + //============================================================================== + template +-TMatrix3 rotationConstrain(const TMatrix3& m); ++FCL_EXPORT TMatrix3 rotationConstrain(const TMatrix3& m); + + //============================================================================== + template +-TMatrix3 operator * (const Matrix3& m, const TaylorModel& a); ++FCL_EXPORT TMatrix3 operator * (const Matrix3& m, const TaylorModel& a); + + //============================================================================== + template +-TMatrix3 operator * (const TaylorModel& a, const Matrix3& m); ++FCL_EXPORT TMatrix3 operator * (const TaylorModel& a, const Matrix3& m); + + //============================================================================== + template +-TMatrix3 operator * (const TaylorModel& a, const TMatrix3& m); ++FCL_EXPORT TMatrix3 operator * (const TaylorModel& a, const TMatrix3& m); + + //============================================================================== + template +-TMatrix3 operator * (double d, const TMatrix3& m); ++FCL_EXPORT TMatrix3 operator * (double d, const TMatrix3& m); + + //============================================================================== + template +-TMatrix3 operator + (const Matrix3& m1, const TMatrix3& m2); ++FCL_EXPORT TMatrix3 operator + (const Matrix3& m1, const TMatrix3& m2); + + //============================================================================== + template +-TMatrix3 operator - (const Matrix3& m1, const TMatrix3& m2); ++FCL_EXPORT TMatrix3 operator - (const Matrix3& m1, const TMatrix3& m2); + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/taylor_model.cpp b/src/math/motion/taylor_model/taylor_model.cpp +index 58a98d7..e3addc3 100644 +--- a/src/math/motion/taylor_model/taylor_model.cpp ++++ b/src/math/motion/taylor_model/taylor_model.cpp +@@ -45,30 +45,30 @@ namespace fcl + + //============================================================================== + template +-class TaylorModel; ++class FCL_EXPORT TaylorModel; + + //============================================================================== + template +-TaylorModel operator * (double d, const TaylorModel& a); ++FCL_EXPORT TaylorModel operator * (double d, const TaylorModel& a); + + //============================================================================== + template +-TaylorModel operator + (double d, const TaylorModel& a); ++FCL_EXPORT TaylorModel operator + (double d, const TaylorModel& a); + + //============================================================================== + template +-TaylorModel operator - (double d, const TaylorModel& a); ++FCL_EXPORT TaylorModel operator - (double d, const TaylorModel& a); + + //============================================================================== + template +-void generateTaylorModelForCosFunc(TaylorModel& tm, double w, double q0); ++FCL_EXPORT void generateTaylorModelForCosFunc(TaylorModel& tm, double w, double q0); + + //============================================================================== + template +-void generateTaylorModelForSinFunc(TaylorModel& tm, double w, double q0); ++FCL_EXPORT void generateTaylorModelForSinFunc(TaylorModel& tm, double w, double q0); + + //============================================================================== + template +-void generateTaylorModelForLinearFunc(TaylorModel& tm, double p, double v); ++FCL_EXPORT void generateTaylorModelForLinearFunc(TaylorModel& tm, double p, double v); + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/taylor_vector.cpp b/src/math/motion/taylor_model/taylor_vector.cpp +index 81acc6e..d430c71 100644 +--- a/src/math/motion/taylor_model/taylor_vector.cpp ++++ b/src/math/motion/taylor_model/taylor_vector.cpp +@@ -42,22 +42,22 @@ namespace fcl + + //============================================================================== + template +-class TVector3; ++class FCL_EXPORT TVector3; + + //============================================================================== + template +-void generateTVector3ForLinearFunc(TVector3& v, const Vector3& position, const Vector3& velocity); ++FCL_EXPORT void generateTVector3ForLinearFunc(TVector3& v, const Vector3& position, const Vector3& velocity); + + //============================================================================== + template +-TVector3 operator * (const Vector3& v, const TaylorModel& a); ++FCL_EXPORT TVector3 operator * (const Vector3& v, const TaylorModel& a); + + //============================================================================== + template +-TVector3 operator + (const Vector3& v1, const TVector3& v2); ++FCL_EXPORT TVector3 operator + (const Vector3& v1, const TVector3& v2); + + //============================================================================== + template +-TVector3 operator - (const Vector3& v1, const TVector3& v2); ++FCL_EXPORT TVector3 operator - (const Vector3& v1, const TVector3& v2); + + } // namespace fcl +diff --git a/src/math/motion/taylor_model/time_interval.cpp b/src/math/motion/taylor_model/time_interval.cpp +index 2587db4..669a05c 100644 +--- a/src/math/motion/taylor_model/time_interval.cpp ++++ b/src/math/motion/taylor_model/time_interval.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct TimeInterval; ++struct FCL_EXPORT TimeInterval; + + } // namespace fcl +diff --git a/src/math/motion/translation_motion.cpp b/src/math/motion/translation_motion.cpp +index abfbb41..873a717 100644 +--- a/src/math/motion/translation_motion.cpp ++++ b/src/math/motion/translation_motion.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class TranslationMotion; ++class FCL_EXPORT TranslationMotion; + + } // namespace fcl +diff --git a/src/math/motion/triangle_motion_bound_visitor.cpp b/src/math/motion/triangle_motion_bound_visitor.cpp +index 1fd1f2b..9840e3e 100644 +--- a/src/math/motion/triangle_motion_bound_visitor.cpp ++++ b/src/math/motion/triangle_motion_bound_visitor.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class TriangleMotionBoundVisitor; ++class FCL_EXPORT TriangleMotionBoundVisitor; + + } // namespace fcl +diff --git a/src/math/rng.cpp b/src/math/rng.cpp +index c997dab..ae3093d 100644 +--- a/src/math/rng.cpp ++++ b/src/math/rng.cpp +@@ -42,6 +42,6 @@ namespace fcl + + //============================================================================== + template +-class RNG; ++class FCL_EXPORT RNG; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_base.cpp b/src/math/sampler/sampler_base.cpp +index 593cbdc..7b2b7b1 100644 +--- a/src/math/sampler/sampler_base.cpp ++++ b/src/math/sampler/sampler_base.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerBase; ++class FCL_EXPORT SamplerBase; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_se2.cpp b/src/math/sampler/sampler_se2.cpp +index 11495c1..4409bea 100644 +--- a/src/math/sampler/sampler_se2.cpp ++++ b/src/math/sampler/sampler_se2.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerSE2; ++class FCL_EXPORT SamplerSE2; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_se2_disk.cpp b/src/math/sampler/sampler_se2_disk.cpp +index d70aab9..f4ddf52 100644 +--- a/src/math/sampler/sampler_se2_disk.cpp ++++ b/src/math/sampler/sampler_se2_disk.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerSE2_disk; ++class FCL_EXPORT SamplerSE2_disk; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_se3_euler.cpp b/src/math/sampler/sampler_se3_euler.cpp +index 3f97745..9f8c689 100644 +--- a/src/math/sampler/sampler_se3_euler.cpp ++++ b/src/math/sampler/sampler_se3_euler.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerSE3Euler; ++class FCL_EXPORT SamplerSE3Euler; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_se3_euler_ball.cpp b/src/math/sampler/sampler_se3_euler_ball.cpp +index 3570439..53aaa08 100644 +--- a/src/math/sampler/sampler_se3_euler_ball.cpp ++++ b/src/math/sampler/sampler_se3_euler_ball.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerSE3Euler_ball; ++class FCL_EXPORT SamplerSE3Euler_ball; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_se3_quat.cpp b/src/math/sampler/sampler_se3_quat.cpp +index 0d0999e..181941b 100644 +--- a/src/math/sampler/sampler_se3_quat.cpp ++++ b/src/math/sampler/sampler_se3_quat.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerSE3Quat; ++class FCL_EXPORT SamplerSE3Quat; + + } // namespace fcl +diff --git a/src/math/sampler/sampler_se3_quat_ball.cpp b/src/math/sampler/sampler_se3_quat_ball.cpp +index 0db789a..83f246b 100644 +--- a/src/math/sampler/sampler_se3_quat_ball.cpp ++++ b/src/math/sampler/sampler_se3_quat_ball.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class SamplerSE3Quat_ball; ++class FCL_EXPORT SamplerSE3Quat_ball; + + } // namespace fcl +diff --git a/src/math/variance3.cpp b/src/math/variance3.cpp +index 91255f8..fb5bd85 100644 +--- a/src/math/variance3.cpp ++++ b/src/math/variance3.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class Variance3; ++class FCL_EXPORT Variance3; + + } // namespace fcl +diff --git a/src/narrowphase/collision.cpp b/src/narrowphase/collision.cpp +index ad51861..e7df177 100644 +--- a/src/narrowphase/collision.cpp ++++ b/src/narrowphase/collision.cpp +@@ -42,7 +42,7 @@ namespace fcl + + //============================================================================== + template +-std::size_t collide( ++FCL_EXPORT std::size_t collide( + const CollisionObject* o1, + const CollisionObject* o2, + const CollisionRequest& request, +@@ -50,7 +50,7 @@ std::size_t collide( + + //============================================================================== + template +-std::size_t collide( ++FCL_EXPORT std::size_t collide( + const CollisionGeometry* o1, + const Transform3& tf1, + const CollisionGeometry* o2, +diff --git a/src/narrowphase/collision_object.cpp b/src/narrowphase/collision_object.cpp +index 6362db1..fac663f 100644 +--- a/src/narrowphase/collision_object.cpp ++++ b/src/narrowphase/collision_object.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class CollisionObject; ++class FCL_EXPORT CollisionObject; + + } // namespace fcl +diff --git a/src/narrowphase/collision_request.cpp b/src/narrowphase/collision_request.cpp +index d47be1e..f808b8f 100644 +--- a/src/narrowphase/collision_request.cpp ++++ b/src/narrowphase/collision_request.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct CollisionRequest; ++struct FCL_EXPORT CollisionRequest; + + } // namespace fcl +diff --git a/src/narrowphase/collision_result.cpp b/src/narrowphase/collision_result.cpp +index 047193b..7429829 100644 +--- a/src/narrowphase/collision_result.cpp ++++ b/src/narrowphase/collision_result.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct CollisionResult; ++struct FCL_EXPORT CollisionResult; + + } // namespace fcl +diff --git a/src/narrowphase/contact.cpp b/src/narrowphase/contact.cpp +index 4ca0c5e..3184b5a 100644 +--- a/src/narrowphase/contact.cpp ++++ b/src/narrowphase/contact.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct Contact; ++struct FCL_EXPORT Contact; + + } // namespace fcl +diff --git a/src/narrowphase/contact_point.cpp b/src/narrowphase/contact_point.cpp +index 415e985..d23ace4 100644 +--- a/src/narrowphase/contact_point.cpp ++++ b/src/narrowphase/contact_point.cpp +@@ -42,15 +42,15 @@ namespace fcl + + //============================================================================== + template +-struct ContactPoint; ++struct FCL_EXPORT ContactPoint; + + //============================================================================== + template +-bool comparePenDepth( ++FCL_EXPORT bool comparePenDepth( + const ContactPoint& _cp1, const ContactPoint& _cp2); + + //============================================================================== + template +-void flipNormal(std::vector>& contacts); ++FCL_EXPORT void flipNormal(std::vector>& contacts); + + } // namespace fcl +diff --git a/src/narrowphase/continuous_collision.cpp b/src/narrowphase/continuous_collision.cpp +index bbbce19..39fe983 100644 +--- a/src/narrowphase/continuous_collision.cpp ++++ b/src/narrowphase/continuous_collision.cpp +@@ -42,7 +42,7 @@ namespace fcl + + //============================================================================== + template +-double continuousCollide( ++FCL_EXPORT double continuousCollide( + const CollisionGeometry* o1, + const MotionBase* motion1, + const CollisionGeometry* o2, +@@ -52,7 +52,7 @@ double continuousCollide( + + //============================================================================== + template +-double continuousCollide( ++FCL_EXPORT double continuousCollide( + const CollisionGeometry* o1, + const Transform3& tf1_beg, + const Transform3& tf1_end, +@@ -64,7 +64,7 @@ double continuousCollide( + + //============================================================================== + template +-double continuousCollide( ++FCL_EXPORT double continuousCollide( + const CollisionObject* o1, + const Transform3& tf1_end, + const CollisionObject* o2, +@@ -74,7 +74,7 @@ double continuousCollide( + + //============================================================================== + template +-double collide( ++FCL_EXPORT double collide( + const ContinuousCollisionObject* o1, + const ContinuousCollisionObject* o2, + const ContinuousCollisionRequest& request, +diff --git a/src/narrowphase/continuous_collision_object.cpp b/src/narrowphase/continuous_collision_object.cpp +index 93b7672..7688a58 100644 +--- a/src/narrowphase/continuous_collision_object.cpp ++++ b/src/narrowphase/continuous_collision_object.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-class ContinuousCollisionObject; ++class FCL_EXPORT ContinuousCollisionObject; + + } // namespace fcl +diff --git a/src/narrowphase/continuous_collision_request.cpp b/src/narrowphase/continuous_collision_request.cpp +index 46dc3ea..6b62af6 100644 +--- a/src/narrowphase/continuous_collision_request.cpp ++++ b/src/narrowphase/continuous_collision_request.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct ContinuousCollisionRequest; ++struct FCL_EXPORT ContinuousCollisionRequest; + + } // namespace fcl +diff --git a/src/narrowphase/continuous_collision_result.cpp b/src/narrowphase/continuous_collision_result.cpp +index 3d9c559..c60821e 100644 +--- a/src/narrowphase/continuous_collision_result.cpp ++++ b/src/narrowphase/continuous_collision_result.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct ContinuousCollisionResult; ++struct FCL_EXPORT ContinuousCollisionResult; + + } // namespace fcl +diff --git a/src/narrowphase/cost_source.cpp b/src/narrowphase/cost_source.cpp +index 9c60638..b10af6b 100644 +--- a/src/narrowphase/cost_source.cpp ++++ b/src/narrowphase/cost_source.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct CostSource; ++struct FCL_EXPORT CostSource; + + } // namespace fcl +diff --git a/src/narrowphase/detail/convexity_based_algorithm/epa.cpp b/src/narrowphase/detail/convexity_based_algorithm/epa.cpp +index eae9f17..a581f46 100644 +--- a/src/narrowphase/detail/convexity_based_algorithm/epa.cpp ++++ b/src/narrowphase/detail/convexity_based_algorithm/epa.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct EPA; ++struct FCL_EXPORT EPA; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/convexity_based_algorithm/gjk.cpp b/src/narrowphase/detail/convexity_based_algorithm/gjk.cpp +index 6b693eb..a4a00f3 100644 +--- a/src/narrowphase/detail/convexity_based_algorithm/gjk.cpp ++++ b/src/narrowphase/detail/convexity_based_algorithm/gjk.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct GJK; ++struct FCL_EXPORT GJK; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/convexity_based_algorithm/gjk_libccd.cpp b/src/narrowphase/detail/convexity_based_algorithm/gjk_libccd.cpp +index 7c3714e..f1bf00c 100644 +--- a/src/narrowphase/detail/convexity_based_algorithm/gjk_libccd.cpp ++++ b/src/narrowphase/detail/convexity_based_algorithm/gjk_libccd.cpp +@@ -45,40 +45,40 @@ namespace detail + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-class GJKInitializer>; ++class FCL_EXPORT GJKInitializer>; + + //============================================================================== + template +-void* triCreateGJKObject( ++FCL_EXPORT void* triCreateGJKObject( + const Vector3d& P1, const Vector3d& P2, const Vector3d& P3); + + //============================================================================== + template +-void* triCreateGJKObject( ++FCL_EXPORT void* triCreateGJKObject( + const Vector3d& P1, + const Vector3d& P2, + const Vector3d& P3, +@@ -86,7 +86,7 @@ void* triCreateGJKObject( + + //============================================================================== + template +-bool GJKCollide( ++FCL_EXPORT bool GJKCollide( + void* obj1, + ccd_support_fn supp1, + ccd_center_fn cen1, +@@ -101,7 +101,7 @@ bool GJKCollide( + + //============================================================================== + template +-bool GJKDistance( ++FCL_EXPORT bool GJKDistance( + void* obj1, + ccd_support_fn supp1, + void* obj2, +@@ -113,7 +113,7 @@ bool GJKDistance( + Vector3d* p2); + + template +-bool GJKSignedDistance( ++FCL_EXPORT bool GJKSignedDistance( + void* obj1, + ccd_support_fn supp1, + void* obj2, +diff --git a/src/narrowphase/detail/convexity_based_algorithm/minkowski_diff.cpp b/src/narrowphase/detail/convexity_based_algorithm/minkowski_diff.cpp +index af2d711..a8d7742 100644 +--- a/src/narrowphase/detail/convexity_based_algorithm/minkowski_diff.cpp ++++ b/src/narrowphase/detail/convexity_based_algorithm/minkowski_diff.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct MinkowskiDiff; ++struct FCL_EXPORT MinkowskiDiff; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/gjk_solver_indep.cpp b/src/narrowphase/detail/gjk_solver_indep.cpp +index 8c17e3a..5e1bee8 100755 +--- a/src/narrowphase/detail/gjk_solver_indep.cpp ++++ b/src/narrowphase/detail/gjk_solver_indep.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct GJKSolver_indep; ++struct FCL_EXPORT GJKSolver_indep; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/gjk_solver_libccd.cpp b/src/narrowphase/detail/gjk_solver_libccd.cpp +index e906a06..5811c35 100755 +--- a/src/narrowphase/detail/gjk_solver_libccd.cpp ++++ b/src/narrowphase/detail/gjk_solver_libccd.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct GJKSolver_libccd; ++struct FCL_EXPORT GJKSolver_libccd; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/box_box.cpp b/src/narrowphase/detail/primitive_shape_algorithm/box_box.cpp +index aa27182..0293f39 100755 +--- a/src/narrowphase/detail/primitive_shape_algorithm/box_box.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/box_box.cpp +@@ -45,21 +45,21 @@ namespace detail + + //============================================================================== + template +-void lineClosestApproach(const Vector3& pa, const Vector3& ua, ++FCL_EXPORT void lineClosestApproach(const Vector3& pa, const Vector3& ua, + const Vector3& pb, const Vector3& ub, + double* alpha, double* beta); + + //============================================================================== + template +-int intersectRectQuad2(double h[2], double p[8], double ret[16]); ++FCL_EXPORT int intersectRectQuad2(double h[2], double p[8], double ret[16]); + + //============================================================================== + template +-void cullPoints2(int n, double p[], int m, int i0, int iret[]); ++FCL_EXPORT void cullPoints2(int n, double p[], int m, int i0, int iret[]); + + //============================================================================== + template +-int boxBox2( ++FCL_EXPORT int boxBox2( + const Vector3& side1, + const Transform3& tf1, + const Vector3& side2, +@@ -72,7 +72,7 @@ int boxBox2( + + //============================================================================== + template +-bool boxBoxIntersect(const Box& s1, const Transform3& tf1, ++FCL_EXPORT bool boxBoxIntersect(const Box& s1, const Transform3& tf1, + const Box& s2, const Transform3& tf2, + std::vector>* contacts_); + +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.cpp b/src/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.cpp +index bf72d5c..c12710f 100644 +--- a/src/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/capsule_capsule.cpp +@@ -45,10 +45,10 @@ namespace detail + + //============================================================================== + template +-double clamp(double n, double min, double max); ++FCL_EXPORT double clamp(double n, double min, double max); + + //============================================================================== +-template double closestPtSegmentSegment(const Vector3d& p_FP1, ++template FCL_EXPORT double closestPtSegmentSegment(const Vector3d& p_FP1, + const Vector3d& p_FQ1, + const Vector3d& p_FP2, + const Vector3d& p_FQ2, double* s, +@@ -57,7 +57,7 @@ template double closestPtSegmentSegment(const Vector3d& p_FP1, + + //============================================================================== + template +-bool capsuleCapsuleDistance( ++FCL_EXPORT bool capsuleCapsuleDistance( + const Capsule& s1, const Transform3& tf1, + const Capsule& s2, const Transform3& tf2, + double* dist, Vector3d* p1_res, Vector3d* p2_res); +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/halfspace.cpp b/src/narrowphase/detail/primitive_shape_algorithm/halfspace.cpp +index 4f39570..299f080 100755 +--- a/src/narrowphase/detail/primitive_shape_algorithm/halfspace.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/halfspace.cpp +@@ -45,76 +45,76 @@ namespace detail + + //============================================================================== + template <> +-float halfspaceIntersectTolerance() ++FCL_EXPORT float halfspaceIntersectTolerance() + { + return 0.0001f; + } + + //============================================================================== + template <> +-double halfspaceIntersectTolerance() ++FCL_EXPORT double halfspaceIntersectTolerance() + { + return 0.0000001; + } + + //============================================================================== + template +-bool sphereHalfspaceIntersect( ++FCL_EXPORT bool sphereHalfspaceIntersect( + const Sphere& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool ellipsoidHalfspaceIntersect( ++FCL_EXPORT bool ellipsoidHalfspaceIntersect( + const Ellipsoid& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool boxHalfspaceIntersect( ++FCL_EXPORT bool boxHalfspaceIntersect( + const Box& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2); + + //============================================================================== + template +-bool boxHalfspaceIntersect( ++FCL_EXPORT bool boxHalfspaceIntersect( + const Box& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool capsuleHalfspaceIntersect( ++FCL_EXPORT bool capsuleHalfspaceIntersect( + const Capsule& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool cylinderHalfspaceIntersect( ++FCL_EXPORT bool cylinderHalfspaceIntersect( + const Cylinder& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool coneHalfspaceIntersect( ++FCL_EXPORT bool coneHalfspaceIntersect( + const Cone& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool convexHalfspaceIntersect( ++FCL_EXPORT bool convexHalfspaceIntersect( + const Convex& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + Vector3* contact_points, double* penetration_depth, Vector3* normal); + + //============================================================================== + template +-bool convexHalfspaceIntersect(const Convex& convex_C, ++FCL_EXPORT bool convexHalfspaceIntersect(const Convex& convex_C, + const Transform3& X_FC, + const Halfspace& half_space_H, + const Transform3& X_FH, +@@ -122,14 +122,14 @@ bool convexHalfspaceIntersect(const Convex& convex_C, + + //============================================================================== + template +-bool halfspaceTriangleIntersect( ++FCL_EXPORT bool halfspaceTriangleIntersect( + const Halfspace& s1, const Transform3& tf1, + const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf2, + Vector3* contact_points, double* penetration_depth, Vector3* normal); + + //============================================================================== + template +-bool planeHalfspaceIntersect( ++FCL_EXPORT bool planeHalfspaceIntersect( + const Plane& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + Plane& pl, +@@ -139,7 +139,7 @@ bool planeHalfspaceIntersect( + + //============================================================================== + template +-bool halfspacePlaneIntersect( ++FCL_EXPORT bool halfspacePlaneIntersect( + const Halfspace& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + Plane& pl, Vector3& p, Vector3& d, +@@ -148,7 +148,7 @@ bool halfspacePlaneIntersect( + + //============================================================================== + template +-bool halfspaceIntersect( ++FCL_EXPORT bool halfspaceIntersect( + const Halfspace& s1, const Transform3& tf1, + const Halfspace& s2, const Transform3& tf2, + Vector3& p, Vector3& d, +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/intersect.cpp b/src/narrowphase/detail/primitive_shape_algorithm/intersect.cpp +index b4d8a22..82f4d0c 100644 +--- a/src/narrowphase/detail/primitive_shape_algorithm/intersect.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/intersect.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-class Intersect; ++class FCL_EXPORT Intersect; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/plane.cpp b/src/narrowphase/detail/primitive_shape_algorithm/plane.cpp +index 5cee207..4e0dd06 100755 +--- a/src/narrowphase/detail/primitive_shape_algorithm/plane.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/plane.cpp +@@ -45,79 +45,79 @@ namespace detail + + //============================================================================== + template <> +-double planeIntersectTolerance() ++FCL_EXPORT double planeIntersectTolerance() + { + return 0.0000001; + } + + //============================================================================== + template <> +-float planeIntersectTolerance() ++FCL_EXPORT float planeIntersectTolerance() + { + return 0.0001; + } + + //============================================================================== + template +-bool spherePlaneIntersect(const Sphere& s1, const Transform3& tf1, ++FCL_EXPORT bool spherePlaneIntersect(const Sphere& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool ellipsoidPlaneIntersect(const Ellipsoid& s1, const Transform3& tf1, ++FCL_EXPORT bool ellipsoidPlaneIntersect(const Ellipsoid& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool boxPlaneIntersect(const Box& s1, const Transform3& tf1, ++FCL_EXPORT bool boxPlaneIntersect(const Box& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, ++FCL_EXPORT bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2); + + //============================================================================== + template +-bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, ++FCL_EXPORT bool capsulePlaneIntersect(const Capsule& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool cylinderPlaneIntersect(const Cylinder& s1, const Transform3& tf1, ++FCL_EXPORT bool cylinderPlaneIntersect(const Cylinder& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2); + + //============================================================================== + template +-bool cylinderPlaneIntersect(const Cylinder& s1, const Transform3& tf1, ++FCL_EXPORT bool cylinderPlaneIntersect(const Cylinder& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool conePlaneIntersect(const Cone& s1, const Transform3& tf1, ++FCL_EXPORT bool conePlaneIntersect(const Cone& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool convexPlaneIntersect(const Convex& s1, const Transform3& tf1, ++FCL_EXPORT bool convexPlaneIntersect(const Convex& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + Vector3* contact_points, double* penetration_depth, Vector3* normal); + + //============================================================================== + template +-bool planeTriangleIntersect(const Plane& s1, const Transform3& tf1, ++FCL_EXPORT bool planeTriangleIntersect(const Plane& s1, const Transform3& tf1, + const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf2, + Vector3* contact_points, double* penetration_depth, Vector3* normal); + + //============================================================================== + template +-bool planeIntersect(const Plane& s1, const Transform3& tf1, ++FCL_EXPORT bool planeIntersect(const Plane& s1, const Transform3& tf1, + const Plane& s2, const Transform3& tf2, + std::vector>* contacts); + +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/sphere_box.cpp b/src/narrowphase/detail/primitive_shape_algorithm/sphere_box.cpp +index 291ad30..9d04f7e 100644 +--- a/src/narrowphase/detail/primitive_shape_algorithm/sphere_box.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/sphere_box.cpp +@@ -43,14 +43,14 @@ namespace detail + { + + //============================================================================== +-template bool ++template FCL_EXPORT bool + sphereBoxIntersect(const Sphere& sphere, const Transform3& X_FS, + const Box& box, const Transform3& X_FB, + std::vector>* contacts); + + //============================================================================== + +-template bool ++template FCL_EXPORT bool + sphereBoxDistance(const Sphere& sphere, const Transform3& X_FS, + const Box& box, const Transform3& X_FB, + double* distance, Vector3* p_FSb, +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.cpp b/src/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.cpp +index 90d553d..782d89f 100755 +--- a/src/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/sphere_capsule.cpp +@@ -45,7 +45,7 @@ namespace detail + + //============================================================================== + template +-void lineSegmentPointClosestToPoint( ++FCL_EXPORT void lineSegmentPointClosestToPoint( + const Vector3 &p, + const Vector3 &s1, + const Vector3 &s2, +@@ -53,13 +53,13 @@ void lineSegmentPointClosestToPoint( + + //============================================================================== + template +-bool sphereCapsuleIntersect(const Sphere& s1, const Transform3& tf1, ++FCL_EXPORT bool sphereCapsuleIntersect(const Sphere& s1, const Transform3& tf1, + const Capsule& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool sphereCapsuleDistance(const Sphere& s1, const Transform3& tf1, ++FCL_EXPORT bool sphereCapsuleDistance(const Sphere& s1, const Transform3& tf1, + const Capsule& s2, const Transform3& tf2, + double* dist, Vector3* p1, Vector3* p2); + +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.cpp b/src/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.cpp +index d9e87d5..43308d6 100644 +--- a/src/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/sphere_cylinder.cpp +@@ -42,7 +42,7 @@ namespace fcl + namespace detail + { + +-template bool ++template FCL_EXPORT bool + sphereCylinderIntersect(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, +@@ -51,7 +51,7 @@ sphereCylinderIntersect(const Sphere& sphere, + + //============================================================================== + +-template bool ++template FCL_EXPORT bool + sphereCylinderDistance(const Sphere& sphere, + const Transform3& X_FS, + const Cylinder& cylinder, +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/sphere_sphere.cpp b/src/narrowphase/detail/primitive_shape_algorithm/sphere_sphere.cpp +index e4e76ec..cdde4b8 100755 +--- a/src/narrowphase/detail/primitive_shape_algorithm/sphere_sphere.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/sphere_sphere.cpp +@@ -45,13 +45,13 @@ namespace detail + + //============================================================================== + template +-bool sphereSphereIntersect(const Sphere& s1, const Transform3& tf1, ++FCL_EXPORT bool sphereSphereIntersect(const Sphere& s1, const Transform3& tf1, + const Sphere& s2, const Transform3& tf2, + std::vector>* contacts); + + //============================================================================== + template +-bool sphereSphereDistance(const Sphere& s1, const Transform3& tf1, ++FCL_EXPORT bool sphereSphereDistance(const Sphere& s1, const Transform3& tf1, + const Sphere& s2, const Transform3& tf2, + double* dist, Vector3* p1, Vector3* p2); + +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.cpp b/src/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.cpp +index 29b6173..9b9066f 100755 +--- a/src/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/sphere_triangle.cpp +@@ -45,32 +45,32 @@ namespace detail + + //============================================================================== + template +-double segmentSqrDistance(const Vector3& from, const Vector3& to,const Vector3& p, Vector3& nearest); ++FCL_EXPORT double segmentSqrDistance(const Vector3& from, const Vector3& to,const Vector3& p, Vector3& nearest); + + //============================================================================== + template +-bool projectInTriangle(const Vector3& p1, const Vector3& p2, const Vector3& p3, const Vector3& normal, const Vector3& p); ++FCL_EXPORT bool projectInTriangle(const Vector3& p1, const Vector3& p2, const Vector3& p3, const Vector3& normal, const Vector3& p); + + //============================================================================== + template +-bool sphereTriangleIntersect(const Sphere& s, const Transform3& tf, ++FCL_EXPORT bool sphereTriangleIntersect(const Sphere& s, const Transform3& tf, + const Vector3& P1, const Vector3& P2, const Vector3& P3, Vector3* contact_points, double* penetration_depth, Vector3* normal_); + + //============================================================================== + template +-bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf, ++FCL_EXPORT bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf, + const Vector3& P1, const Vector3& P2, const Vector3& P3, + double* dist); + + //============================================================================== + template +-bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf, ++FCL_EXPORT bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf, + const Vector3& P1, const Vector3& P2, const Vector3& P3, + double* dist, Vector3* p1, Vector3* p2); + + //============================================================================== + template +-bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf1, ++FCL_EXPORT bool sphereTriangleDistance(const Sphere& sp, const Transform3& tf1, + const Vector3& P1, const Vector3& P2, const Vector3& P3, const Transform3& tf2, + double* dist, Vector3* p1, Vector3* p2); + +diff --git a/src/narrowphase/detail/primitive_shape_algorithm/triangle_distance.cpp b/src/narrowphase/detail/primitive_shape_algorithm/triangle_distance.cpp +index 2bb3a20..7535622 100644 +--- a/src/narrowphase/detail/primitive_shape_algorithm/triangle_distance.cpp ++++ b/src/narrowphase/detail/primitive_shape_algorithm/triangle_distance.cpp +@@ -45,7 +45,7 @@ namespace detail + + //============================================================================== + template +-class TriangleDistance; ++class FCL_EXPORT TriangleDistance; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/collision/collision_traversal_node_base.cpp b/src/narrowphase/detail/traversal/collision/collision_traversal_node_base.cpp +index 89783e3..5532361 100644 +--- a/src/narrowphase/detail/traversal/collision/collision_traversal_node_base.cpp ++++ b/src/narrowphase/detail/traversal/collision/collision_traversal_node_base.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-class CollisionTraversalNodeBase; ++class FCL_EXPORT CollisionTraversalNodeBase; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.cpp b/src/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.cpp +index 46d34aa..7a3605f 100644 +--- a/src/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.cpp ++++ b/src/narrowphase/detail/traversal/collision/mesh_collision_traversal_node.cpp +@@ -45,11 +45,11 @@ namespace detail + + //============================================================================== + template +-class MeshCollisionTraversalNodeOBB; ++class FCL_EXPORT MeshCollisionTraversalNodeOBB; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshCollisionTraversalNodeOBB& node, + const BVHModel>& model1, + const Transform3& tf1, +@@ -60,11 +60,11 @@ bool initialize( + + //============================================================================== + template +-class MeshCollisionTraversalNodeRSS; ++class FCL_EXPORT MeshCollisionTraversalNodeRSS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshCollisionTraversalNodeRSS& node, + const BVHModel>& model1, + const Transform3& tf1, +@@ -75,11 +75,11 @@ bool initialize( + + //============================================================================== + template +-class MeshCollisionTraversalNodekIOS; ++class FCL_EXPORT MeshCollisionTraversalNodekIOS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshCollisionTraversalNodekIOS& node, + const BVHModel>& model1, + const Transform3& tf1, +@@ -90,11 +90,11 @@ bool initialize( + + //============================================================================== + template +-class MeshCollisionTraversalNodeOBBRSS; ++class FCL_EXPORT MeshCollisionTraversalNodeOBBRSS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshCollisionTraversalNodeOBBRSS& node, + const BVHModel>& model1, + const Transform3& tf1, +diff --git a/src/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.cpp b/src/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.cpp +index d34c701..1fff836 100644 +--- a/src/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.cpp ++++ b/src/narrowphase/detail/traversal/collision/mesh_continuous_collision_traversal_node.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct BVHContinuousCollisionPair; ++struct FCL_EXPORT BVHContinuousCollisionPair; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/collision_node.cpp b/src/narrowphase/detail/traversal/collision_node.cpp +index 352cd40..5a756c9 100644 +--- a/src/narrowphase/detail/traversal/collision_node.cpp ++++ b/src/narrowphase/detail/traversal/collision_node.cpp +@@ -45,23 +45,23 @@ namespace detail + + //============================================================================== + template +-void collide(CollisionTraversalNodeBase* node, BVHFrontList* front_list); ++FCL_EXPORT void collide(CollisionTraversalNodeBase* node, BVHFrontList* front_list); + + //============================================================================== + template +-void selfCollide(CollisionTraversalNodeBase* node, BVHFrontList* front_list); ++FCL_EXPORT void selfCollide(CollisionTraversalNodeBase* node, BVHFrontList* front_list); + + //============================================================================== + template +-void distance(DistanceTraversalNodeBase* node, BVHFrontList* front_list, int qsize); ++FCL_EXPORT void distance(DistanceTraversalNodeBase* node, BVHFrontList* front_list, int qsize); + + //============================================================================== + template +-void collide2(MeshCollisionTraversalNodeOBB* node, BVHFrontList* front_list); ++FCL_EXPORT void collide2(MeshCollisionTraversalNodeOBB* node, BVHFrontList* front_list); + + //============================================================================== + template +-void collide2(MeshCollisionTraversalNodeRSS* node, BVHFrontList* front_list); ++FCL_EXPORT void collide2(MeshCollisionTraversalNodeRSS* node, BVHFrontList* front_list); + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.cpp b/src/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.cpp +index b2501b6..12f1a22 100644 +--- a/src/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.cpp ++++ b/src/narrowphase/detail/traversal/distance/conservative_advancement_stack_data.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-struct ConservativeAdvancementStackData; ++struct FCL_EXPORT ConservativeAdvancementStackData; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/distance/distance_traversal_node_base.cpp b/src/narrowphase/detail/traversal/distance/distance_traversal_node_base.cpp +index b6cca49..66e9e05 100644 +--- a/src/narrowphase/detail/traversal/distance/distance_traversal_node_base.cpp ++++ b/src/narrowphase/detail/traversal/distance/distance_traversal_node_base.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-class DistanceTraversalNodeBase; ++class FCL_EXPORT DistanceTraversalNodeBase; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.cpp b/src/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.cpp +index ed7d8cc..0a81f78 100644 +--- a/src/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.cpp ++++ b/src/narrowphase/detail/traversal/distance/mesh_conservative_advancement_traversal_node.cpp +@@ -45,11 +45,11 @@ namespace detail + + //============================================================================== + template +-class MeshConservativeAdvancementTraversalNodeRSS; ++class FCL_EXPORT MeshConservativeAdvancementTraversalNodeRSS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshConservativeAdvancementTraversalNodeRSS& node, + const BVHModel>& model1, + const Transform3& tf1, +@@ -59,11 +59,11 @@ bool initialize( + + //============================================================================== + template +-class MeshConservativeAdvancementTraversalNodeOBBRSS; ++FCL_EXPORT class MeshConservativeAdvancementTraversalNodeOBBRSS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshConservativeAdvancementTraversalNodeOBBRSS& node, + const BVHModel>& model1, + const Transform3& tf1, +diff --git a/src/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.cpp b/src/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.cpp +index 7d862c1..36110c3 100644 +--- a/src/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.cpp ++++ b/src/narrowphase/detail/traversal/distance/mesh_distance_traversal_node.cpp +@@ -45,11 +45,11 @@ namespace detail + + //============================================================================== + template +-class MeshDistanceTraversalNodeRSS; ++class FCL_EXPORT MeshDistanceTraversalNodeRSS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshDistanceTraversalNodeRSS& node, + const BVHModel>& model1, + const Transform3& tf1, +@@ -60,11 +60,11 @@ bool initialize( + + //============================================================================== + template +-class MeshDistanceTraversalNodekIOS; ++class FCL_EXPORT MeshDistanceTraversalNodekIOS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshDistanceTraversalNodekIOS& node, + const BVHModel>& model1, + const Transform3& tf1, +@@ -75,11 +75,11 @@ bool initialize( + + //============================================================================== + template +-class MeshDistanceTraversalNodeOBBRSS; ++class FCL_EXPORT MeshDistanceTraversalNodeOBBRSS; + + //============================================================================== + template +-bool initialize( ++FCL_EXPORT bool initialize( + MeshDistanceTraversalNodeOBBRSS& node, + const BVHModel>& model1, + const Transform3& tf1, +diff --git a/src/narrowphase/detail/traversal/traversal_node_base.cpp b/src/narrowphase/detail/traversal/traversal_node_base.cpp +index 4a11aaf..207722e 100644 +--- a/src/narrowphase/detail/traversal/traversal_node_base.cpp ++++ b/src/narrowphase/detail/traversal/traversal_node_base.cpp +@@ -44,7 +44,7 @@ namespace detail + { + + template +-class TraversalNodeBase; ++class FCL_EXPORT TraversalNodeBase; + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/detail/traversal/traversal_recurse.cpp b/src/narrowphase/detail/traversal/traversal_recurse.cpp +index a382a32..7660466 100644 +--- a/src/narrowphase/detail/traversal/traversal_recurse.cpp ++++ b/src/narrowphase/detail/traversal/traversal_recurse.cpp +@@ -45,31 +45,31 @@ namespace detail + + //============================================================================== + template +-void collisionRecurse(CollisionTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list); ++FCL_EXPORT void collisionRecurse(CollisionTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list); + + //============================================================================== + template +-void collisionRecurse(MeshCollisionTraversalNodeOBB* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list); ++FCL_EXPORT void collisionRecurse(MeshCollisionTraversalNodeOBB* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list); + + //============================================================================== + template +-void collisionRecurse(MeshCollisionTraversalNodeRSS* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list); ++FCL_EXPORT void collisionRecurse(MeshCollisionTraversalNodeRSS* node, int b1, int b2, const Matrix3& R, const Vector3& T, BVHFrontList* front_list); + + //============================================================================== + template +-void selfCollisionRecurse(CollisionTraversalNodeBase* node, int b, BVHFrontList* front_list); ++FCL_EXPORT void selfCollisionRecurse(CollisionTraversalNodeBase* node, int b, BVHFrontList* front_list); + + //============================================================================== + template +-void distanceRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list); ++FCL_EXPORT void distanceRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list); + + //============================================================================== + template +-void distanceQueueRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list, int qsize); ++FCL_EXPORT void distanceQueueRecurse(DistanceTraversalNodeBase* node, int b1, int b2, BVHFrontList* front_list, int qsize); + + //============================================================================== + template +-void propagateBVHFrontListCollisionRecurse(CollisionTraversalNodeBase* node, BVHFrontList* front_list); ++FCL_EXPORT void propagateBVHFrontListCollisionRecurse(CollisionTraversalNodeBase* node, BVHFrontList* front_list); + + } // namespace detail + } // namespace fcl +diff --git a/src/narrowphase/distance.cpp b/src/narrowphase/distance.cpp +index 5ef7dc6..9fe440f 100644 +--- a/src/narrowphase/distance.cpp ++++ b/src/narrowphase/distance.cpp +@@ -42,7 +42,7 @@ namespace fcl + + //============================================================================== + template +-double distance( ++FCL_EXPORT double distance( + const CollisionObject* o1, + const CollisionObject* o2, + const DistanceRequest& request, +@@ -50,7 +50,7 @@ double distance( + + //============================================================================== + template +-double distance( ++FCL_EXPORT double distance( + const CollisionGeometry* o1, const Transform3& tf1, + const CollisionGeometry* o2, const Transform3& tf2, + const DistanceRequest& request, DistanceResult& result); +diff --git a/src/narrowphase/distance_request.cpp b/src/narrowphase/distance_request.cpp +index e694013..f9c631a 100644 +--- a/src/narrowphase/distance_request.cpp ++++ b/src/narrowphase/distance_request.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct DistanceRequest; ++struct FCL_EXPORT DistanceRequest; + + } // namespace fcl +diff --git a/src/narrowphase/distance_result.cpp b/src/narrowphase/distance_result.cpp +index 1fefd21..48307f1 100644 +--- a/src/narrowphase/distance_result.cpp ++++ b/src/narrowphase/distance_result.cpp +@@ -41,6 +41,6 @@ namespace fcl + { + + template +-struct DistanceResult; ++struct FCL_EXPORT DistanceResult; + + } // namespace fcl +diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt +index 50e1c1c..87e37ba 100644 +--- a/test/CMakeLists.txt ++++ b/test/CMakeLists.txt +@@ -32,8 +32,11 @@ execute_process(COMMAND cmake -E remove_directory ${CMAKE_BINARY_DIR}/test_resul + execute_process(COMMAND cmake -E make_directory ${CMAKE_BINARY_DIR}/test_results) + include_directories(${GTEST_INCLUDE_DIRS}) + +-add_library(test_fcl_utility test_fcl_utility.cpp) ++add_library(test_fcl_utility STATIC test_fcl_utility.cpp) + target_link_libraries(test_fcl_utility fcl) ++set_target_properties(test_fcl_utility PROPERTIES ++ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ++) + + # test file list + set(tests +@@ -76,7 +79,10 @@ macro(add_fcl_test test_file_name) + get_filename_component(test_name ${ARGV} NAME_WE) + add_executable(${test_name} ${ARGV}) + target_link_libraries(${test_name} fcl test_fcl_utility gtest) +- add_test(${test_name} ${EXECUTABLE_OUTPUT_PATH}/${test_name}) ++ add_test(NAME ${test_name} COMMAND $) ++ set_target_properties(${test_name} PROPERTIES ++ RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin" ++ ) + endmacro(add_fcl_test) + + # configure location of resources diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 47a5c2e..af04691 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -11,6 +11,7 @@ source: sha256: {{ sha256 }} patches: - 553.patch + - enable-shared-libs.patch # [win] build: number: 7 @@ -41,7 +42,7 @@ test: - if not exist %PREFIX%\\Library\\include\\fcl\\geometry\\shape\\cylinder.h exit 1 # [win] - if not exist %PREFIX%\\Library\\lib\\pkgconfig\\fcl.pc exit 1 # [win] - if not exist %PREFIX%\\Library\\CMake\\fcl-config.cmake exit 1 # [win] - - if not exist %PREFIX%\\Library\\lib\\fcl.lib exit 1 # [win] + - if not exist %PREFIX%\\Library\\bin\\fcl.dll exit 1 # [win] about: home: https://github.com/flexible-collision-library/fcl From a2642c6b3ff393d847038733b98cc5e70084ebf5 Mon Sep 17 00:00:00 2001 From: "conda-forge-webservices[bot]" <91080706+conda-forge-webservices[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 00:32:28 +0000 Subject: [PATCH 4/4] MNT: Re-rendered with conda-build 24.11.2, conda-smithy 3.45.1, and conda-forge-pinning 2025.01.03.14.12.46 --- .azure-pipelines/azure-pipelines-linux.yml | 6 +++--- .azure-pipelines/azure-pipelines-win.yml | 1 + .ci_support/linux_64_.yaml | 2 +- .ci_support/linux_aarch64_.yaml | 6 +----- .ci_support/linux_ppc64le_.yaml | 2 +- .scripts/run_osx_build.sh | 5 +++-- .scripts/run_win_build.bat | 5 +++-- build-locally.py | 7 +++++++ 8 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index aef462c..b1513b8 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -11,15 +11,15 @@ jobs: linux_64_: CONFIG: linux_64_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 linux_aarch64_: CONFIG: linux_aarch64_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 linux_ppc64le_: CONFIG: linux_ppc64le_ UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 timeoutInMinutes: 360 variables: {} diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 9901917..13022dd 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -24,6 +24,7 @@ jobs: displayName: Run Windows build env: MINIFORGE_HOME: $(MINIFORGE_HOME) + CONDA_BLD_PATH: $(CONDA_BLD_PATH) PYTHONUNBUFFERED: 1 CONFIG: $(CONFIG) CI: azure diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 678f86c..76ec336 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -17,7 +17,7 @@ cxx_compiler: cxx_compiler_version: - '13' docker_image: -- quay.io/condaforge/linux-anvil-cos7-x86_64 +- quay.io/condaforge/linux-anvil-x86_64:alma9 flann: - 1.9.2 target_platform: diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index b81a8c2..eae418d 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -1,5 +1,3 @@ -BUILD: -- aarch64-conda_cos7-linux-gnu c_compiler: - gcc c_compiler_version: @@ -8,8 +6,6 @@ c_stdlib: - sysroot c_stdlib_version: - '2.17' -cdt_arch: -- aarch64 cdt_name: - conda channel_sources: @@ -21,7 +17,7 @@ cxx_compiler: cxx_compiler_version: - '13' docker_image: -- quay.io/condaforge/linux-anvil-cos7-x86_64 +- quay.io/condaforge/linux-anvil-x86_64:alma9 flann: - 1.9.2 target_platform: diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index 774315c..77c0dae 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -17,7 +17,7 @@ cxx_compiler: cxx_compiler_version: - '13' docker_image: -- quay.io/condaforge/linux-anvil-cos7-x86_64 +- quay.io/condaforge/linux-anvil-x86_64:alma9 flann: - 1.9.2 target_platform: diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 0b36498..0e3c394 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -6,8 +6,9 @@ source .scripts/logging_utils.sh set -xe -MINIFORGE_HOME=${MINIFORGE_HOME:-${HOME}/miniforge3} -MINIFORGE_HOME=${MINIFORGE_HOME%/} # remove trailing slash +MINIFORGE_HOME="${MINIFORGE_HOME:-${HOME}/miniforge3}" +MINIFORGE_HOME="${MINIFORGE_HOME%/}" # remove trailing slash +export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${MINIFORGE_HOME}/conda-bld}" ( startgroup "Provisioning base env with micromamba" ) 2> /dev/null MICROMAMBA_VERSION="1.5.10-0" diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 1f2ec52..283e143 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -34,8 +34,9 @@ call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefi pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" if !errorlevel! neq 0 exit /b !errorlevel! echo Removing %MAMBA_ROOT_PREFIX% -del /S /Q "%MAMBA_ROOT_PREFIX%" -del /S /Q "%MICROMAMBA_TMPDIR%" +del /S /Q "%MAMBA_ROOT_PREFIX%" >nul +del /S /Q "%MICROMAMBA_TMPDIR%" >nul +call :end_group call :start_group "Configuring conda" diff --git a/build-locally.py b/build-locally.py index 6788aea..c4a56c6 100755 --- a/build-locally.py +++ b/build-locally.py @@ -26,6 +26,13 @@ def setup_environment(ns): os.path.dirname(__file__), "miniforge3" ) + # The default cache location might not be writable using docker on macOS. + if ns.config.startswith("linux") and platform.system() == "Darwin": + os.environ["CONDA_FORGE_DOCKER_RUN_ARGS"] = ( + os.environ.get("CONDA_FORGE_DOCKER_RUN_ARGS", "") + + " -e RATTLER_CACHE_DIR=/tmp/rattler_cache" + ) + def run_docker_build(ns): script = ".scripts/run_docker_build.sh"