我刚刚构建了OpenCV3,它运行得非常顺利。我做了一个小例子可执行文件,它构建并链接到新的OpenCV3罚款。我然后切换我的实际代码库指向新的OpenCV3,但我收到一些奇怪的链接器错误,如
undefined reference to cv::_InputArray::_InputArray(cv::Mat const&)
我正在使用CMake找到OpenCV
find_package(OpenCV 3 REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIBRARY_DIRS})
add_executable(WriteImage WriteImage.cpp)
target_link_libraries(WriteImage ${OpenCV_LIBS})
我检查了这些变量,似乎设置正确。我还从一个新的构建树开始,以确保CMake在链接到OpenCV2时没有保存任何内容。有谁知道什么会导致这个问题链接?
链接器说问题出在这个函数中:
double GetMaxValue(cv::Mat& image)
{
//Initialize m
double minVal;
double maxVal;
cv::Point minLoc;
cv::Point maxLoc;
minMaxLoc(image, &minVal, &maxVal, &minLoc, &maxLoc );
return maxVal;
}
答案 0 :(得分:0)
似乎有些东西被添加到我的包含路径中,我想这是首先找到与库不兼容的标题(正确找到)。因此,即使OpenCV_INCLUDE_DIRS是正确的,最终的包含路径在其内容之前也有一些东西。