C++ 将我的方法添加到OpenCV

C++ 将我的方法添加到OpenCV,c++,opencv,cmake,C++,Opencv,Cmake,我想在OpenCV库中添加新方法。我制作了我的_funct.cpp,其代码如下: #包括“precomp.hpp” #包括 void cv::my_funct(){ printf(“%s\n”,“你好,世界!”); } 我添加了headerCV_EXPORTS_W void my_funct()到文件C:\opencv\build\include\opencv2\imgproc\imgproc.hpp和C:\opencv\sources\modules\imgproc\include\openc

我想在OpenCV库中添加新方法。我制作了我的_funct.cpp,其代码如下:

#包括“precomp.hpp”
#包括
void cv::my_funct(){
printf(“%s\n”,“你好,世界!”);
}

我添加了header
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为整个库构建新的二进制文件,但当我创建一个使用我的函数()的新项目时,我得到一个错误:

无法在中找到程序入口点ZN2cv8my函数 动态链接库路径\u到\u此\u项目\project.exe


其他opencv函数也可以正常工作。我正在使用mingw32编译库,OpenCV的版本是2.4.9。你能告诉我我做错了什么吗?

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

我建议在开发阶段(不谈脚本编写)使用添加后期构建步骤,并将正确的DLL复制到
project.exe

add_custom_command(
    TARGET project
    POST_BUILD
        COMMAND ${CMAKE_COMMAND} -E copy  
                     "<... path to matching DLL ...>" 
                     "$<TARGET_FILE_DIR:project>"
)
add_custom_命令(
目标项目
后期构建
命令${CMAKE_COMMAND}-E复制
"" 
"$"
)
当然,您也可以让CMake找到匹配的DLL,但在详细介绍之前,我需要查看您的
project.exe
CMake脚本

如果您正在扩展OpenCV代码,那么最好使用它将OpenCV包含到您的项目中

参考资料


这个问题与CMake有什么关系?请澄清或删除标记。我正在使用它生成生成生成文件。所以我想,也许,在这种情况下,我应该做一些与平常不同的事情,让更熟悉这个程序的人来帮助我。CMake标签让我看到了这个问题,我不喜欢看到非CMake的问题,仅仅因为人们错误地标记了他们的问题。嗯,在使用CMake的过程中,我不知道我做错了什么,所以我在CMake部分添加了标签,以防我需要做一些不同的事情。我知道不太可能,但我不是100%肯定。我同意这可能不是CMake的问题,但肯定是CMake相关的问题。我是新来的,所以我可能误解了如何使用标记。@奇怪的是,为什么不简单地将代码附加到opencv\modules\imgproc\src中的任何文件中?