使用带有 fftw3 Visual Studio 2010 的 openCV 的链接器错误

Posted

技术标签:

【中文标题】使用带有 fftw3 Visual Studio 2010 的 openCV 的链接器错误【英文标题】:Linker error using openCV with fftw3 Visual Studio 2010 【发布时间】:2013-06-08 16:56:40 【问题描述】:

我在尝试在同一个项目中使用 openCV 实现 fftw3 时遇到问题。 我是 c/c++ 的新手,任何帮助都将不胜感激。 以下只是我使用的示例代码:

 #include "fftw3.h"
 #include <stdlib.h>

 int main()
     fftw_complex *in, *out;
     fftw_plan p;
     int N=8;
     in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
     out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
     p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
     for(int i=0; i<N; i++)
        in[i][0]=i;
        in[i][1]=0;
     
     fftw_execute(p);
     for(int i=0; i<N; i++)
            printf("R->%f\tI->%f\n", out[i][0], out[i][1]);
     
     system("pause");
     fftw_destroy_plan(p);
     fftw_free(in); fftw_free(out);
 

代码在其自己的项目中编译良好。 但是当我试图将 fftw3 和 openCV 链接在一起时,我得到一个链接器错误:

    1>video.obj : error LNK2001: unresolved external symbol _fftw_destroy_plan
    1>video.obj : error LNK2001: unresolved external symbol _fftw_execute
    1>video.obj : error LNK2001: unresolved external symbol _fftw_plan_dft_2d
    1>video.obj : error LNK2001: unresolved external symbol _fftw_malloc
    1>video.obj : error LNK2001: unresolved external symbol _fftw_free
    1>D:\C WorkSpace\Viedo_CV\Video test\Release\Video test.exe : fatal error LNK1120: 5 unresolved externals
    1>
    1>Build FAILED.

我仔细检查了所有链接器配置,它们似乎都很好(正如我所说的,在单独的项目中一切都运行良好)。 openCV 库工作正常。 不幸的是,我无法发布我的真实代码。 我使用的所有openCV都在:

    #include <opencv\\cv.h>
    #include <opencv\\highgui.h>
    #include <windows.h>

任何帮助将不胜感激。

【问题讨论】:

你能包含一个通用的openCV文件吗?我无法想象你是如何链接 fftw 和 openCV 库的。 感谢您的评论,我认为我不明白什么是“通用 openCV 文件”,因为我说我是 c/c++ 和编程新手。 @tir38 我的意思是您正在使用 FFTW 的示例代码,它是基本的,没有针对您的特定代码进行修改。所有变量名称都有助于我们理解问题,但不是您最终会为您的实现调用它们的名称。我希望您可以创建另一个包含您的 openCV 的一般实现的文件,这样我们就可以看到 openCV 与 FFTW 的关系,而无需详细介绍您的具体实现。 哦,好吧,我明白你现在的意思了,问题是没有更多代码,那是我运行的代码并遇到了链接器问题,只有当我将 FFT 与 openCV 链接时才会发生根本没有 openCV 代码。 如果有帮助,我使用 [link](www.fftw.org) 中的“fftw-3.3-libs-visual-studio-2010.zip”项目来构建 fftw 库,一切正常很好,直到我将 openCV 链接到同一个示例项目(没有 openCV 代码,甚至没有 openCV 的#include 行)。 @tir38 【参考方案1】:

我明白了,当我安装 openCV 时,我在 openCV 构建位置创建了一个环境变量,并将 openCV DLL 的位置添加到 Path 变量中。 我没有注意到的是我将 x86 版本的 DLL 添加到 Path 变量中,并且我的项目设置为 x64,它在另一个项目中工作的原因是因为我将 x64 DLL 复制到了它自己的项目文件夹中。 在我将路径编辑到正确的 x64 DLL 位置后,一切正常。

【讨论】:

以上是关于使用带有 fftw3 Visual Studio 2010 的 openCV 的链接器错误的主要内容,如果未能解决你的问题,请参考以下文章

带有 Visual Studio 的第三方库

使用带有 C#、Visual Studio 2010 的 PhoneNumbers.dll 验证电话号码

带有 SQL 的 Visual Studio 2010 探查器

在 Visual Studio 中使用 Qt 远程对象(带有 qt 插件)

无法使用带有 Visual Studio 2010 的 Windows 窗体恢复设计器视图窗口

带有 C++ Visual Studio Community 2013 的 Arduino 程序