2013-07-18 34 views
1

我想測試人臉檢測Flandmarks http://cmp.felk.cvut.cz/~uricamic/flandmark/但我不能得到它的工作。不能得到Flandmarks工作,C++,錯誤LNK2019,無法解析的外部符號

我一直在爲此工作大概10個小時。 我在opencv.org上尋求幫助(http://answers.opencv.org/question/16956/eye-detection-is-jumping/,這個問題首先是關於別的東西,如果你想閱讀關於這個問題的評論,請參閱評論)並得到了一些幫助,但問題仍然存在。

計算機:64位,Windows 7中,Visual Studio 2010中

我已經試過:

由於這個問題有人問我嘗試用一​​個空的項目,所以我這樣做。

我在Visual Studio中開始了一個空的項目C++ 2010 物業管理器 - >補充下C/C++ - >附加包含目錄:

* C:\Program Files (x86)\opencv\build\include 
* C:\Program Files (x86)\opencv\build\include\opencv 
* C:\Program Files (x86)\opencv\build\include\opencv2 

物業管理器 - >連接 - >附加包含目錄 - >

* C:\Program Files (x86)\opencv\build\x64\vc10\lib; 
* C:\Program Files (x86)\opencv\build\x64\vc10\bin; 
* %(AdditionalLibraryDirectories) 

物業管理器 - >鏈接器 - >輸入 - >附加依賴 - >

* opencv_calib3d244d.lib 
* opencv_contrib244d.lib 
* opencv_core244d.lib 
* opencv_features2d244d.lib 
* opencv_flann244d.lib 
* opencv_gpu244d.lib 
* opencv_haartraining_engined.lib 
* opencv_highgui244d.lib 
* opencv_imgproc244d.lib 
* opencv_legacy244d.lib 
* opencv_ml244d.lib 
* opencv_nonfree244d.lib 
* opencv_objdetect244d.lib 
* opencv_photo244d.lib 
* opencv_stitching244d.lib 
* opencv_ts244d.lib 
* opencv_video244d.lib 
* opencv_videostab244d.lib 

物業管理器 - >配置管理器 - >活動解決方案平臺 - >

  • Win32中改爲 「新」,在這裏我從安騰改變到x64。從「win32」複製設置

從您可以在flandmarks主頁下載的zip文件,我複製文件夾「libflandmark」中的文件。到我的項目文件夾。而且我還將數據文件複製到項目文件夾中。

* flandmark_detector.cpp 
* flandmark_detector.h 
* liblbp.cpp 
* liblbp.h 
* msvc-compat.h 
* flandmark_model.dat 

我創建了一個main.cpp中,我說:

#include "stdio.h" 
#include "flandmark_detector.h" 


int main(int argc, char * argv[]) 
{ 
    printf("test"); 
    FLANDMARK_Model * model = flandmark_init("flandmark_model.dat"); 

    return 0; 
} 

在此之後,錯誤是:

1> All outputs are up-to-date. 
1>main.obj : error LNK2019: unresolved external symbol "struct model_struct * __cdecl flandmark_init(char const *)" ([email protected]@[email protected]@[email protected]) referenced in function main 
1>C:\projects\test_projects\flandmarks_empty\x64\Debug\flandmarks_empty.exe : fatal error LNK1120: 1 unresolved externals 
1> 
1>Build FAILED. 
1> 
1>Time Elapsed 00:00:04.47 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

感謝您的閱讀!

+1

嘗試用'extern「C」{}'圍繞flandmark頭文件的#include,然後重新進行全新的重建。 –

+0

我試過user2585483s解決方案,它工作,但我很好奇什麼'extern「C」{}'呢?如果你有時間,請解釋。感謝您花時間幫助我! – Easyrider

+1

好消息,它使用了答案中的建議。我曾認爲它可能與'extern「C」{}'有關,因爲它看起來像是一個名稱問題。混合使用C和C++代碼時,編譯器將修改C函數名稱。 'extern「C」{}「會告訴它不要在這個聲明中修改C函數的名字。 –

回答

2

編譯器正在尋找flandmart_init(char const *)。你需要包含定義這個函數的頭文件。如果您已經包含了它的頭文件,那麼編譯器無法找到函數flandmart_init()的定義。現在,如果你有flandmark_detector.cpp和flandmark_model.cpp,因爲這看起來像第三方代碼。包括他們的頭文件,然後包含在你的項目flandmark_model.cpp和flandmark_model.cpp中,無論哪一個都定義了函數flandmart_init(char const *)。確保它編譯。將它們與您的.cpp文件一起添加。您可以右鍵單擊項目中的源文件,然後單擊;添加 - >現有項目。

+0

非常感謝!我忘了在項目中添加文件。我只將這些文件複製到項目文件夾中。謝謝謝謝!你是我的救星! – Easyrider

相關問題