4
我定義下面的頭文件(在C)中,留出了功能的實現,因爲thise不需要:調用從C++ C函數,「不匹配函數」錯誤
#ifndef FFMPEG_MEDIAMETADATARETRIEVER_H_
#define FFMPEG_MEDIAMETADATARETRIEVER_H_
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/dict.h>
int setDataSource(AVFormatContext** pFormatCtx, const char* path);
#endif /*FFMPEG_MEDIAMETADATARETRIEVER_H_*/
在C++中中,我定義我的第二報頭的文件:
#ifndef MEDIAMETADATARETRIEVER_H
#define MEDIAMETADATARETRIEVER_H
using namespace std;
extern "C" {
#include "ffmpeg_mediametadataretriever.h"
}
class MediaMetadataRetriever
{
public:
MediaMetadataRetriever();
~MediaMetadataRetriever();
int setDataSource(const char* dataSourceUrl);
};
#endif // MEDIAMETADATARETRIEVER_H
在,mediametadataretriever.cpp我定義下面的函數:
int MediaMetadataRetriever::setDataSource(
const char *srcUrl)
{
// should call C function
AVFormatContext* pFormatCtx;
return setDataSource(&pFormatCtx, srcUrl);
}
W¯¯母雞我嘗試編譯在Eclipse這個(C++)項目中,我得到一個「沒有匹配函數的調用...」相關的錯誤:
return setDataSource(&pFormatCtx, srcUrl);
如果我註釋掉調用,代碼編譯好:
int MediaMetadataRetriever::setDataSource(
const char *srcUrl)
{
return 0;
}
這似乎是一個鏈接的問題,沒有人知道我在做什麼錯?
@WilliamSeemann:好的,很高興它幫助:) – 2013-03-15 20:05:26