Using openCV SIFT in C++

1.

#include <opencv2\nonfree\features2d.hpp>
#include <opencv2\nonfree\nonfree.hpp>
2\. link opencv_nonfree247.lib (247 is your opencv version) 3\.
initModule_nonfree();

Ptr<cv::FeatureDetector> detector = FeatureDetector::create("SIFT"); 
Ptr<cv::DescriptorExtractor> descriptor = DescriptorExtractor::create("SIFT"); 

// detect keypoints
std::vector<KeyPoint> keypoints1;
detector->detect(img1, keypoints1);

// extract features
Mat desc1, desc2;
descriptor->compute(img1, keypoints1, desc1);