demo---practical-optimal-registration-of-terrestrial-lidar-scan-pairs's People
Forkers
chaoxingxi zfxu nnu-gisa zhangzhengeric xlicz yuepanedward hel4859 collector-m hijasonzou whigg ogsdave zhuhaipeng-byte mfkiwl whatguia coder-gan gangma2610 kokiaokidemo---practical-optimal-registration-of-terrestrial-lidar-scan-pairs's Issues
undefined reference to cblas_dgemm function
Looks like the current way of including <cblas.h> in "reg_common.h" can cause a linker error such as 'undefined reference to cblas_* function ...'. One fix is to apply the change below
#ifdef __cplusplus
extern "C"
{
#endif
#include <cblas.h>
#ifdef __cplusplus
}
#endif
as stated in
https://stackoverflow.com/questions/10786237/atlas-gemm-linking-undefined-reference-to-cblas-sgemm
Issue when running "make"
Hi, thank you so much for your code. Could you help me cause I met a problem. I installed all Pre-requisites. And I can run "cmake .."
However, when I run make. I got the problem. I think the reason maybe come from complier. I use gcc version 5.4.0 Ubuntu 16.04.
They say that error: ‘iota’ is not a member of ‘std’, error: ‘begin’ is not a member of ‘std’
The problem is:
[ 7%] Building CXX object CMakeFiles/4DOFReg.dir/src/globReg4D/globReg4D.cpp.o In file included from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:16:0, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/../globReg4D/include/reg_common.h:31:0: warning: "NDEBUG" redefined #define NDEBUG ^ <command-line>:0:0: note: this is the location of the previous definition /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp: In function ‘int GLOBREG::RANSAC(pcl::PointCloud<pcl::PointXYZ>::Ptr, pcl::PointCloud<pcl::PointXYZ>::Ptr, std::vector<reg::corrTab>&, double, reg::Transform3&)’: /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:135:32: error: ‘>>’ should be ‘> >’ within a nested template argument list std::vector<std::vector<int>> pool(corr.size()); ^ /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:138:9: error: ‘iota’ is not a member of ‘std’ std::iota( std::begin( tmp ), std::end( tmp ), i+1 ); ^ /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:138:20: error: ‘begin’ is not a member of ‘std’ std::iota( std::begin( tmp ), std::end( tmp ), i+1 ); ^ /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:138:20: note: suggested alternatives: In file included from /home/giang/.conda/envs/cs231n/include/boost/foreach.hpp:74:0, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/conversions.h:56, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/io.h:47, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree.h:46, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree_flann.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:7, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/range/begin.hpp:106:77: note: ‘boost::range_adl_barrier::begin’ NSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( cons ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/aux_/begin_end.hpp:21:0, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/vector0.hpp:31, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/vector10.hpp:18, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/vector20.hpp:18, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector.hpp:36, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/register_point_struct.h:58, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/point_types.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:6, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/mpl/begin_end_fwd.hpp:22:38: note: ‘boost::mpl::begin’ template< typename Sequence > struct begin; ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/foreach.hpp:74:0, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/conversions.h:56, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/io.h:47, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree.h:46, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree_flann.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:7, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/range/begin.hpp:106:77: note: ‘boost::range_adl_barrier::begin’ NSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type begin( cons ^ In file included from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/conversions.h:56:0, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/io.h:47, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree.h:46, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree_flann.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:7, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/foreach.hpp:689:1: note: ‘boost::foreach_detail_::begin’ begin(auto_any_t col, type2type<T *, C> *, boost::mpl::true_ *) // null-termina ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/fusion/iterator/segmented_iterator.hpp:13:0, from /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic/detail/segmented_end.hpp:12, from /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic/end.hpp:18, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl/back.hpp:12, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl.hpp:15, from /home/giang/.conda/envs/cs231n/include/boost/fusion/include/mpl.hpp:12, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/impl/accumulators.hpp:44, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/centroid.h:954, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/features/normal_3d.h:45, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/impl/iss_3d.hpp:42, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/iss_3d.h:274, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:9, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic/begin.hpp:92:5: note: ‘boost::fusion::begin’ begin(Sequence const& seq) ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic/value_at.hpp:16:0, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl/at.hpp:12, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl.hpp:14, from /home/giang/.conda/envs/cs231n/include/boost/fusion/include/mpl.hpp:12, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/impl/accumulators.hpp:44, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/centroid.h:954, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/features/normal_3d.h:45, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/impl/iss_3d.hpp:42, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/iss_3d.h:274, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:9, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic_fwd.hpp:62:16: note: ‘boost::fusion::result_of::begin’ struct begin; ^ /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:138:39: error: ‘end’ is not a member of ‘std’ std::iota( std::begin( tmp ), std::end( tmp ), i+1 ); ^ /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:138:39: note: suggested alternatives: In file included from /home/giang/.conda/envs/cs231n/include/boost/foreach.hpp:73:0, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/conversions.h:56, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/io.h:47, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree.h:46, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree_flann.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:7, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/range/end.hpp:100:77: note: ‘boost::range_adl_barrier::end’ NSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/aux_/begin_end.hpp:21:0, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/vector0.hpp:31, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/vector10.hpp:18, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector/vector20.hpp:18, from /home/giang/.conda/envs/cs231n/include/boost/mpl/vector.hpp:36, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/register_point_struct.h:58, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/point_types.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:6, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/mpl/begin_end_fwd.hpp:23:38: note: ‘boost::mpl::end’ template< typename Sequence > struct end; ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/foreach.hpp:73:0, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/conversions.h:56, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/io.h:47, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree.h:46, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree_flann.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:7, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/range/end.hpp:100:77: note: ‘boost::range_adl_barrier::end’ NSTEXPR inline BOOST_DEDUCED_TYPENAME range_iterator<const T>::type end( const ^ In file included from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/conversions.h:56:0, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/io.h:47, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree.h:46, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/kdtree/kdtree_flann.h:44, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:7, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/foreach.hpp:729:1: note: ‘boost::foreach_detail_::end’ end(auto_any_t, type2type<T *, C> *, boost::mpl::true_ *) // null-terminated C- ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl/back.hpp:12:0, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl.hpp:15, from /home/giang/.conda/envs/cs231n/include/boost/fusion/include/mpl.hpp:12, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/impl/accumulators.hpp:44, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/centroid.h:954, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/features/normal_3d.h:45, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/impl/iss_3d.hpp:42, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/iss_3d.h:274, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:9, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic/end.hpp:92:5: note: ‘boost::fusion::end’ end(Sequence const& seq) ^ In file included from /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic/value_at.hpp:16:0, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl/at.hpp:12, from /home/giang/.conda/envs/cs231n/include/boost/fusion/mpl.hpp:14, from /home/giang/.conda/envs/cs231n/include/boost/fusion/include/mpl.hpp:12, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/impl/accumulators.hpp:44, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/common/centroid.h:954, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/features/normal_3d.h:45, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/impl/iss_3d.hpp:42, from /home/giang/.conda/envs/cs231n/include/pcl-1.9/pcl/keypoints/iss_3d.h:274, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/../util/inputGen.h:9, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/../../include/globReg4D/globReg4D.h:4, from /home/giang/Documents/UbuntuProject/Demo---Practical-optimal-registration-of-terrestrial-LiDAR-scan-pairs-master/src/globReg4D/globReg4D.cpp:1: /home/giang/.conda/envs/cs231n/include/boost/fusion/sequence/intrinsic_fwd.hpp:68:16: note: ‘boost::fusion::result_of::end’ struct end; ^ CMakeFiles/4DOFReg.dir/build.make:86: recipe for target 'CMakeFiles/4DOFReg.dir/src/globReg4D/globReg4D.cpp.o' failed make[2]: *** [CMakeFiles/4DOFReg.dir/src/globReg4D/globReg4D.cpp.o] Error 1 CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/4DOFReg.dir/all' failed make[1]: *** [CMakeFiles/4DOFReg.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2
RUN on Windows System
Thank you for your wonderful works! My computer is run on Windows System, but it seems your test was based on Linux, May it running on Windows? And what do I need to prepared?
Look forward for your response!
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.