【问题标题】:Make Opencv portable with visual studio project and remove linkage errors使用 Visual Studio 项目使 Opencv 可移植并消除链接错误
【发布时间】:2017-04-13 14:25:23
【问题描述】:

我正在尝试将 opencv 2.4.13 链接到 Visual Studio 项目。我在项目的子文件夹中有 .lib 和 .dll 文件。我将相对路径添加到配置中。但我仍然遇到链接错误。 我的目标是使项目可移植:我将目录带到另一台机器上,无需在机器上单独安装 opencv 即可运行。

我添加了什么:

  • lib 子目录到其他库目录
  • 附加包含目录的包含目录
  • 链接器中的 .dll -> 输入 -> 附加依赖项

以下是这些错误的示例:

LNK2019 unresolved external symbol __wcsdup_dbg referenced in function __Getctype   
LNK2001 unresolved external symbol __wcsdup_dbg 
LNK2019 unresolved external symbol __realloc_dbg referenced in function "private: static void __cdecl std::locale::_Locimp::_Locimp_Addfac(class std::locale::_Locimp *,class std::locale::facet *,unsigned int)" (?_Locimp_Addfac@_Locimp@locale@std@@CAXPAV123@PAVfacet@23@I@Z)

有什么想法吗?

【问题讨论】:

    标签: c++ visual-studio opencv


    【解决方案1】:

    确保您的所有库都使用相同的调试配置构建 - 也就是说,如果您正在构建项目的 DEBUG 版本,则需要将其链接到 DEBUG 库,并且如果您正在构建 RELEASE 版本您的项目,您需要将其与 RELEASE 库链接。

    同样,您需要确保构建选项中的其他所有内容都兼容 - 例如如果库是在启用 /MT 的情况下构建的,您还必须在启用 /MT 的情况下构建应用程序。与调用约定(/Gd、/Gr、/Gz)、32 位或 64 位等相同。

    您收到的链接器错误引用 _dbg 符号,这似乎暗示您在某处存在 DEBUG/RELEASE 不一致。

    【讨论】:

    • 谢谢你,似乎解决了链接错误。但是现在我有一个运行时错误,告诉我它无法找到 *.dll 文件。你知道原因吗?
    • 将 dll 文件的位置添加到您的系统路径中。
    • 但这不会违背将所有文件包含在项目文件夹中的目的。这是否意味着如果我将项目带到另一台计算机上,我将不得不将 dll 文件添加到系统 PATH 中?
    【解决方案2】:

    我终于用这个问题的答案弄明白了: Question: OpenCV - missing dlls?

    我刚刚将我的dll的路径添加到调试环境:项目->属性->配置属性->调试->环境->在这里添加dll的路径,语法如下:

    • 例如,将 C:\Windows\Temp 添加到 PATH:PATH=C:\WINDOWS\Temp;%PATH%
    • 同样,将 $(SolutionDir)\DLLS 附加到 PATH:PATH=%PATH%;$(SolutionDir)\DLLS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多