libx264链接不工作(Cygwin)



我想在我的一个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++,而不是C。x264是一个C库,名字可能被弄乱了。

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

——旧建议遵循——

为什么你链接到'lx264.dll'而不仅仅是'lx264'?

而且,看起来你正在尝试链接Microsoft .lib文件。通常目标文件在编译器/链接器之间不兼容二进制文件…尽管在Cygwin上可能会有所不同。根据你下面的评论,这是不同的…所以别介意。

最新更新