将我的方法添加到OpenCV

时间:2015-12-07 12:10:46

标签: c++ opencv cmake

我想在OpenCV库中添加新方法。我创建了my_funct.cpp,代码简单如下:

#include "precomp.hpp" #include <stdio.h> void cv::my_funct(){ printf("%s\n","Hello world!"); }

我将标题CV_EXPORTS_W void my_funct();添加到文件C:\ opencv \ build \ include \ opencv2 \ imgproc \ imgproc.hpp和C:\ opencv \ sources \ modules \ imgproc \ include \ opencv2 \ imgproc \ imgproc。 HPP。然后我使用CMake为整个库构建新的二进制文件,但是当我创建一个我使用my_funct()的新项目时,我收到一个错误:

  

无法找到过程入口点_ZN2cv8my_functEv   动态链接库path_to_this_project \ project.exe。

其他opencv函数工作得很好。我使用mingw32编译库,OpenCV的版本是2.4.9。你能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

这看起来像是一个MinGW运行时错误。因此,假设您在构建project.exe时未遇到任何编译器或链接器错误,您的可执行文件很可能找不到与您的.dll匹配的.dll.a导入库(必须包含my_funct()定义)。

我建议在开发阶段 - 不讨论install()脚本 - 使用add_custom_command()generator expressions添加构建后步骤,以复制{{3}旁边的正确DLL 1}}:

project.exe

当然你也可以让CMake找到匹配的DLL,但在我进入细节之前,我需要看看你的add_custom_command( TARGET project POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy "<... path to matching DLL ...>" "$<TARGET_FILE_DIR:project>" ) CMake脚本。

也许也是个好主意 - 如果您正在扩展OpenCV代码 - 将使用ExternalProject_Add()将OpenCV包含到您的项目中。

<强>参考