【问题标题】:Linking against libx264 does not work (Cygwin)链接 libx264 不起作用(Cygwin)
【发布时间】:2011-12-27 05:05:11
【问题描述】:

我想在我的一个 Windows 项目中使用 libx264。我用 cygwin 编译了 x264,包括共享库和静态库。一切正常,静态和动态库也正确安装在 cygwin 中。

当尝试编译另一个使用 libx264 (gcc ... -lx264) 的项目时,我收到一个错误:

/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:406: undefined reference to `x264_param_default_preset(x264_param_t*, char const*, char const*)'
/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:425: undefined reference to `x264_param_apply_profile(x264_param_t*, char const*)'

链接器似乎对我构建的 libx264 库有问题,但这里到底出了什么问题?如何正确链接 x264?

完整的构建输出如下所示:

为项目测试构建配置调试**

make all 
Building target: test.exe
Invoking: Cygwin C++ Linker
g++ -L"/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0A/Lib" -L"/cygdrive/c/Program Files (x86)/Microsoft DirectX SDK (June 2010)/Lib/x86" -L/usr/local/lib -o "test.exe"  ./main.o   -lx264.dll -lKernel32 -lUser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -ld3dx9d -ld3d9 -loleaut32 -luuid -lm
./main.o: In function `_Z8InitX264ii':
/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:406: undefined reference to `x264_param_default_preset(x264_param_t*, char const*, char const*)'
/cygdrive/c/Users/Erik/workspace/test/Debug/../main.cpp:425: undefined reference to `x264_param_apply_profile(x264_param_t*, char const*)'
collect2: ld returned 1 exit status
make: *** [test.exe] Error 1

**** Build Finished ****

感谢您的帮助!

【问题讨论】:

    标签: c++ gcc g++ cygwin x264


    【解决方案1】:

    您使用的是 C++,而不是 C。x264 是一个 C 库,名称可能被弄乱了。

    试试

    extern "C" {
        #include "x264.h"
    }
    

    --- 遵循旧建议 ---

    你为什么要链接 aginst 'lx264.dll' anod 而不仅仅是 'lx264'?

    此外,您似乎正在尝试链接 Microsoft .lib 文件。通常目标文件在编译器/链接器之间不是二进制兼容的......尽管在 Cygwin 上可能有所不同。根据您在下面的评论,它是不同的......所以没关系。

    【讨论】:

    • 如果我在我的代码中省略了 2 个 x264 相关语句,则应用程序可以完美编译。这就是为什么我认为链接 MS 库在这里不是问题。
    • 让我们分解它并确保它可以找到库...如果您运行 g++ -lx264 会发生什么?您应该看到“未定义的对 'main' 的引用”,而不是“找不到 -lx264”。
    • 嗨罗伯特你能看看这个链接stackoverflow.com/questions/9288334/…
    猜你喜欢
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    • 2013-01-10
    • 2015-04-26
    • 2012-10-07
    相关资源
    最近更新 更多