大規模なプロジェクト ( BCI2000 )の拡張機能で OpenCV スイートの一部を使用しようとしています。OpenCV テスト プログラムを正常にコンパイルして実行しましたが、メイン プログラムで OpenCV 関数をリンクすると、LNK2019: unresolved external symbol でリンクが失敗します。プロジェクトのプロパティ マネージャーの最上位のプロパティ ページに、次のコマンド ラインが表示されます。
/OUT:"D:\Users\Admin\Documents\Visual Studio 2012\Projects\bci2k\build\CMakeFiles\custom\OpenCVTestSPModule\Release\OpenCVTestSPModule.exe" /MANIFEST /NXCOMPAT /PDB:"D:\Users\Admin\ Documents\Visual Studio 2012\Projects\bci2k\build\CMakeFiles\custom\OpenCVTestSPModule\Release\OpenCVTestSPModule.pdb" /DYNAMICBASE "opencv_calib3d2410.lib" "opencv_contrib2410.lib" "opencv_core2410.lib" "opencv_features2dlib2410.lib" "opencv_flann2410. " "opencv_gpu2410.lib" "opencv_highgui2410.lib" "opencv_imgproc2410.lib" "opencv_legacy2410.lib" "opencv_ml2410.lib" "opencv_nonfree2410.lib" "opencv_objdetect2410.lib" "opencv_ocl2410.lib" "opencv_photo2410.lib" " "opencv_superres2410.lib" "opencv_ts2410.lib" "opencv_video2410.lib" "opencv_videostab2410.lib" /MACHINE:X86 /SAFESEH /PGD:"D:\Users\Admin\Documents\Visual Studio 2012\Projects\bci2k\build\CMakeFiles\ custom\OpenCVTestSPModule\Release\OpenCVTestSPModule.pgd" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"OpenCVTestSPModule.dir\Release\OpenCVTestSPModule.exe.intermediate.manifest" /ERRORREPORT:PROMPT /LIBPATH: "D:\lib\opencv\build\x86\vc11\lib" /TLBID:1/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"OpenCVTestSPModule.dir\Release\OpenCVTestSPModule.exe.intermediate.manifest" /ERRORREPORT:PROMPT /LIBPATH:"D:\lib\opencv\build\ x86\vc11\lib" /TLBID:1/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"OpenCVTestSPModule.dir\Release\OpenCVTestSPModule.exe.intermediate.manifest" /ERRORREPORT:PROMPT /LIBPATH:"D:\lib\opencv\build\ x86\vc11\lib" /TLBID:1
一方、ビルド出力ボックスで実行されたリンク コマンドは、追加の OpenCV LIBPATH:s が含まれていることを確認しますが、すべての OpenCV .lib ファイルが見つからないため、当然このエラーが発生します。
"/OUT:D:\Users\Admin\Documents\Visual Studio 2012\Projects\bci2k\build\CMakeFiles\custom\OpenCVTestSPModule\Release\OpenCVTestSPModule.exe" /INCREMENTAL:NO /LIBPATH:D:\lib\opencv\build \x86\vc11\lib kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib ws2_32.lib ....\frameworks\LibTiny\Release\ LibTiny.lib ....\frameworks\CoreLib\Release\BCI2000FrameworkCore.lib ws2_32.lib ....\frameworks\SigProcModuleLib\Release\BCI2000FrameworkSigProcModule.lib ....\frameworks\CoreLib\Release\BCI2000FrameworkCore.lib .. ..\frameworks\LibTiny\Release\LibTiny.lib ws2_32.lib winmm.lib /NODEFAULTLIB:msvcrt /NODEFAULTLIB:msvcrtd /NODEFAULTLIB:msvcprt /NODEFAULTLIB:msvcprtd /MANIFEST "/MANIFESTUAC:level='asInvoker' uiAccess='false' " /manifest:embed "/PDB:D:/Users/Admin/Documents/Visual Studio 2012/Projects/bci2k/build/CMakeFiles/custom/OpenCVTestSPModule/Release/OpenCVTestSPModule.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE /NXCOMPAT "/IMPLIB:D:/Users/ Admin/Documents/Visual Studio 2012/Projects/bci2k/build/CMakeFiles/custom/OpenCVTestSPModule/Release/OpenCVTestSPModule.lib" /MACHINE:X86 /SAFESEH /machine:X86 /include:_SigProcRegistry OpenCVTestSPModule.dir\Release\PipeDefinition.objdir\Release\PipeDefinition.objdir\Release\PipeDefinition.obj
「追加のインクルード ディレクトリ」と「追加の依存関係」は同じプロパティ シートにあるため、コンパイル時にプロパティ シートが読み込まれることがわかります。この問題の原因を知っている人はいますか? 対象はWin32(リリース)、IDEはVS2012です。
関連する可能性があります: プロパティ マネージャーには、"Microsoft.Cpp.Win32.user" という名前のプロパティ シートが存在します。これを上に移動しようとすると (後の評価で)、エラー ("Could not find the import for (path to this prop-file) in the import group with label "PropertySheets" and (condition) in the file (path to project)") が表示されます。
プロパティ シートの優先順位は、テスト プログラムで問題なく再配置できます。