首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Visual 2013中用Qt和OpenCV创建应用程序链接问题

在Visual 2013中用Qt和OpenCV创建应用程序链接问题
EN

Stack Overflow用户
提问于 2016-03-31 12:57:25
回答 1查看 163关注 0票数 0

我正在做一个由几个模块组成的项目(总共5个)。我需要一个独立版本的这些,以便他们可以进行测试(他们是处理步骤)。我还需要一个版本,将它们全部合并成一个程序。对于独立测试,它们都有一些额外的主文件和IO来读取其他模块的输入/写入输出(完整的应用程序通常不需要这些)。独立的所有模块运行都很好。

现在的问题是,模块2-5需要OpenCV进行处理,模块1需要Qt作为可视化工具。我尝试将2-5包含到1中(所以1也需要opencv),所以我把它们放到了项目的项目文件夹中,结构如下所示:

代码语言:javascript
复制
M1
    - QtTest        // this is actually M1, I didn't manage to rename that yet
        - Debug
        - GeneratedFiles
        - M2        // M2-5 contain the .h and .cpp of the respective M
        - M3
        - M4
        - M5        // this one also has a portable blender, a folder with a model and a folder with python scripts
        - OpenCV
            - build
                - include
                    - opencv2           // with all the files of opencv
                - x64
                    - vc12              // for now, only one of those when working correctly
                        - bin           // dll
                        - lib           // compact .lib
                        - staticlib     // single .libs'
        - Output
        - Resources
        - x64
        - [All the .h, .cpp, .props. etc. for M1]
    - Win32 
    - x64
    - QtTest.sdf
    - QtTest.sln

现在,我将Visual Studio 2013Qt5.4Opencv3结合使用。我想将OpenCV包含到应用程序中,但是由于大小和方便的原因,用户不必安装Opencv (不需要环境变量),我也需要包括搅拌器(只是作为便携文件夹)。(这是一个研究项目。)

对于M2-5和OpenCV,我还有如下的附加依赖项(两个新的x64道具表,一个用于OpenCV,另一个用于所有模块):

C/C++ >一般>其他包括:

  • $(SolutionDir)QtTest\M2
  • $(SolutionDir)QtTest\M3
  • $(SolutionDir)QtTest\M4
  • $(SolutionDir)QtTest\M5
  • $(SolutionDir)QtTest\OpenCV\build\include

链接器>一般>附加库:

  • $(SolutionDir)QtTest\OpenCV\build\x64\ or 12\具有bin、lib或staticlib

链接器>输入>附加依赖项(取决于bin、lib或staticlib):

  • opencv_world300d.dll 或
  • opencv_world300d.lib 或
  • 静态库中的所有.lib文件

对于这两个工作表,我已经将Codegeneration转换为MTd (lib和staticlib)和MDd (bin)。这个项目本身也是有关系的。

我现在得到了大量的链接器错误

  • LNK2038: RunrimeLibrary、->、MDd_DynamicDebug和MTd_StaticDebug //,这与一些东西(libs)是动态链接库和一些库有关。
  • libcpmtd.lib(stdthrow.obj/xtrow.obj/syserror.obj):LNK2005:已经定义,msvcprtd.lib(MSVCR120D.dll)和msvcprtd.lib(MSVCP120D.dll)中的条目与LIBCMTD.lib(typeinfo.obj)和msvcprtd.lib(MSVCP120D.dll)冲突
  • LNK4098 (警告):msvcrtd.lib与其他人发生冲突,应使用/NODEFAULTLIB
  • LNK2019:未解析的外部符号(24个错误),全部来自模块2-5。

我该怎么安排呢?最好我只想要binlib,因为staticlib也很大。

(如果需要,我可以提供更多的信息。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 11:00:28

好吧,我在那犯了一些错误。没有必要为模块文件夹放置includes。根据动态链接库(MDd/MDd、to 12/lib、opencv_ts300(d).dll + opencv_world300(d).dll)调整所有内容,从而修正链接错误等。

在此基础上出现了错误,即matchTemplate(...)的无入口点错误。我转向了一个新版本的opencv (有一个早期版本,alpha或beta)。3.1正在工作,实际上可能会转到3.0稳定版本。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36334189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档