我在这里阅读了很多非常类似的问题,但他们都没有看到 来解决我的问题。我觉得我只需要一小步就可以成功...使用mingw链接到ffmpeg库C++ - > undefined reference
我有一个现有的C++项目,并尝试包括一些FFmpeg函数。 当与Windows操作系统上的MinGW对FFmpeg库进行链接时,我总是收到 错误消息“未定义的引用...”。
我完全降低我的代码下面的示例:
// START of file simple.cpp
#ifndef INT64_C
#define INT64_C(c) (C## LL)
#define UINT64_C(c) (C## ULL)
#endif
#include <math.h>
#include <libavutil/opt.h>
#include <libavcodec/avcodec.h>
#include <libavutil/channel_layout.h>
#include <libavutil/common.h>
#include <libavutil/imgutils.h>
#include <libavutil/mathematics.h>
#include <libavutil/samplefmt.h>
int main(int argc, char **argv){
avcodec_register_all();
return 0;
}
// END of file simple.cpp
我编译:
g++ -o simple.o -c simple.cpp -std=gnu++11
它运作良好。 我的链接命令是:
g++ -o simple.exe simple.o -lavcodec -std=gnu++11
,我得到的错误信息:
simple.o:simple.cpp:(.text+0xc): undefined reference to avcodec_register_all()
所以,至少在库中找到;-) 我直接使用的库从Zeranoe和我还设法从源头编译 新的。两种情况下的错误消息都是相同的。
找到解决方案可能是以下的试验的工序(编译用gcc代替克++):
我重命名simple.cpp到simple.c
我与编译:
:gcc -o simple.o -c simple.c
我联系
g++ -o simple.o -c simple.c -lavcodec
而且,将工作!
但是,不幸的是,这对我来说没有任何解决方案,因为我的主程序 肯定是C++和必须使用g ++编译。
那么,这到底是什么错误?
这是一个FFmpeg主题还是gcc/g ++主题?
请欢迎提供所有提示。
我已经尝试过所有可能的'extern'和extern“C” - 语句,但没有成功。
请不要使用什么类型的声明。你用g ++编译器版本检查过吗?我的意思是降级它?我觉得有时候g ++很脆弱。 –
对不起 - 我不会再这样做。 - 克++是好的,这是一个失踪的外部陈述。格哈德。 – Gerhard