我刚刚构建了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/

10-10 04:18