【问题标题】:How to resolve LINK errors due to addition of .lib files to a C++ project in Visual Studio?如何解决由于将 .lib 文件添加到 Visual Studio 中的 C++ 项目而导致的 LINK 错误?
【发布时间】:2013-04-22 20:07:40
【问题描述】:

我使用 Visual Studio Pro 2012 创建了一个新的 c++ 项目。

我尝试添加 C 语言 1ib 文件,但遇到一些 LINK 错误,例如:

Error 2 error LNK2019: unresolved external symbol _av_malloc@4 referenced in function _video_encode_example@4 D:\C-Sharp\C++ Compiling\ConsoleApplication7\ConsoleApplication7\example.obj ConsoleApplication7

就我而言,我在Solution Explorer“项目名称” 上转到“Properties”,然后转到Linker > Input,然后在顶部,在其他依赖项我做了编辑并添加了所有.lib文件:

avcodec.lib
avdevice.lib
avfilter.lib
avformat.lib
avutil.lib

我需要添加更多缺失的 .lib 文件吗?我又看了一遍,这些是我仅有的 .lib 文件。

我没有更改链接器中的任何其他内容。在 VC++ 中,我将包含目录更改为:D:\C-Sharp\C++ Compiling\ConsoleApplication4\ConsoleApplication1\include

include目录下,每个目录下都有一些目录,还有一些头文件。

引用目录和库目录都改成同一个目录:'D:\c++dev\ffmpeg-20130418-git-ee94362-win64-dev\lib'。这个目录下有Lib文件, DEF 文件和一些 A 文件。

如何解决这些错误?

** 我在 google 中搜索我试图将 SubSystem 更改为 Console,但它没有帮助。 ** 我已经有了 main 函数:

#include "stdafx.h"
#include "targetver.h"

int _tmain(int argc, _TCHAR* argv[])
{

    return 0;
}

我有 8 个 LINK 错误,错误号 9 是:

Error 10 error LNK1120: 8 unresolved externals D:\C-Sharp\C++ Compiling\ConsoleApplication7\Debug\ConsoleApplication7.exe 1 1 ConsoleApplication7

我还能做些什么来解决这个问题?

** 编辑 **

将项目目标更改为 x64 现在我只有两个链接错误:

错误 2 错误 LNK2019:未解析的外部符号 avcodec_open 在函数 video_encode_example D:\C-Sharp\C++ Compiling\ConsoleApplication7\ConsoleApplication7\example.obj ConsoleApplication7 中引用

错误 3 error LNK1120: 1 unresolved externals D:\C-Sharp\C++ Compiling\ConsoleApplication7\x64\Debug\ConsoleApplication7.exe 1 1 ConsoleApplication7

试图双击它们但没有。我不知道现在该怎么办。

【问题讨论】:

    标签: c++ c


    【解决方案1】:

    我刚刚在您的问题中发现您正在使用 ffmpeg 库。

    如果要将这些链接到 C++ 项目中,则必须确保将 #include 语句包装在 extern "C" 块中,如下所示:

    extern "C"
    {
        #include "avformat.h"   // etc. etc.
    }
    

    这将通过确保导出的函数名称在导入时没有损坏来修复链接错误。

    【讨论】:

    • 我现在几乎尝试了所有的东西,现在我把所有的#include 我都做了 extern "C" {... 但我现在得到了超过 100 个错误。在进行所有更改之前,我有 9 个此链接的错误。我还将所有 lib 文件复制到 exe 应位于的位置,并在此链接答案中完成了所有操作:stackoverflow.com/questions/11301864/… 至极标记为答案。还是行不通。现在,在我只有 9 个链接错误之前,我遇到了超过 100 个不同的错误,而在我添加了这个 extern "C" 之后出现了 100 个错误
    • 您应该只将extern "C" 放在 ffmpeg 标头的 #include 周围 - 这是您所做的吗?
    • 当我下载了 64 位的 dll 和 bin 文件后,我将项目目标更改为 x64。所以现在编译完链接的所有9个错误就消失了。现在我还有另外两个 LINK2019 错误。我刚刚用这两个错误更新了我的问题。
    • 如果我添加了这个,我删除了所有的外部“C”,我得到了 100 多个错误。删除它在更改为 x64 目标后有 9 个 link2019 错误我现在有一个 link2019 错误。
    【解决方案2】:

    尝试在以下位置包含 *.lib 文件的路径:

    链接器 -> 常规 -> 其他库目录

    【讨论】:

    • 如果路径不存在,他会得到一个错误,说找不到文件。
    猜你喜欢
    • 2021-09-05
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多