我刚刚构建了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;
}
最佳答案
似乎正在向我的包含路径中添加一些内容,我想这是首先找到与库不兼容(正确找到)的 header 。因此,即使OpenCV_INCLUDE_DIRS是正确的,最终的include路径在其内容之前也包含一些内容。
关于opencv - OpenCV3对cv::_ InputArray::_ InputArray(cv::Mat const&)的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34078171/