2016-10-10 107 views
0

我得到的「undefined reference to Mapmatcher::ransacMatches(cv::Mat, cv::Mat, Pose&)」連接錯誤在我的項目。我試圖創建一個MWE如下圖所示,相信錯誤將是清楚了。我的猜測是,我需要把Mapmatcher::的功能的面前,但正如我在class Mapmatcher{}宣佈它不應該是必要的。未定義的引用鏈接錯誤

map_matcher_test_lib.h:

class Mapmatcher{ 
    public: 
     Mapmatcher(void){}; 
     void ransacMatches(cv::Mat matGlob, cv::Mat matLoc, Pose &pose); 
}; 

map_matcher_test_lib.cpp:

#include "map_matcher_test/map_matcher_test_lib.h" 
namespace map_matcher_test 
{ 
//classes 
    class Mapmatcher{ 
     void ransacMatches(cv::Mat matGlob, cv::Mat matLoc, Pose &pose) 
      { 
       // some code here... 
      } 
    }; 
} 

map_matcher_test_node.cpp

#include "map_matcher_test/map_matcher_test_lib.h" 
Mapmatcher *mama = new Mapmatcher(); 
void mapMatcher() 
{ 
    // matGlob, matLoc, result known here 
    mama->ransacMatches(matGlob, matLoc, result); 
} 
int main (int argc, char** argv) 
{ 
    // some stuff... 
    mapMatcher(); 
} 

任何幫助表示讚賞。

回答

2

你在你的頭文件中有class Mapmatcher一次,然後在源文件中其他時間,這是一個錯誤,違反一次定義規則。您應該只有在你的頭文件中的類定義和實現的源文件(S)的方法:

map_matcher_test_lib.h

class Mapmatcher{ 
    public: 
     Mapmatcher(void){}; 
     void ransacMatches(cv::Mat matGlob, cv::Mat matLoc, Pose &pose); 
}; 

map_matcher_test_lib.cpp:

#include "map_matcher_test/map_matcher_test_lib.h" 
namespace map_matcher_test 
{ 
    void Mapmatcher::ransacMatches(cv::Mat matGlob, cv::Mat matLoc, Pose &pose) 
    { 
     // some code here... 
    } 
} 

一定要確保的Mapmatcher類定義是在頭的命名空間內,以及雖然。

相關問題