У меня есть Librtmp.dll в папке отладки, где генерируется мой exe. Файлы заголовков и вспомогательных кодов доступны в моем проекте и включены, как показано ниже.
Используя это, я могу использовать librtmp с intellisense.
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
#include "librtmp/rtmp.h"
}
Вот пример кода, который используется.
RTMP *r;
char uri[]="rtmp://localhost:1935/live/desktop";
r = RTMP_Alloc();
RTMP_Init(r);
RTMP_SetupURL(r, (char*)uri);
RTMP_EnableWrite(r);
RTMP_Connect(r, NULL);
RTMP_ConnectStream(r,0);
VS2012
IntelliSense: аргумент типа "RTMP *" несовместим с параметром типа "RTMP *"
Это происходит сначала. Затем еще раз, для каждой последующей переменной r.
r = RTMP_Alloc();
В некотором чтении предлагается использовать typedef.
Понимание typedefs для указателей функций в C
Это приводит к...
typedef (RTMP *) (RTMP * rtmp);
Тем не менее, Visual Studio просто рассмеялась надо мной... покачала головой, задаваясь вопросом, знаю ли я, что я делаю.
IntelliSense: объявление члена с тем же именем, что и его класс
Любые подсказки или идеи были бы полезны.
Спасибо.
ОБНОВЛЕНИЕ - ПОЛНЫЙ КОД
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavdevice/avdevice.h"
#include "libavfilter/avfilter.h"
#include "libavformat/avformat.h"
#include "libavutil/avutil.h"
}
#include "librtmp/rtmp.h"
class RTMP
{
RTMP()
{
}
~RTMP()
{
}
typedef (RTMP*)(RTMP* rtmp);
void RTMP::Run()
{
//Code
//Init RTMP code
RTMP *r;
char uri[]="rtmp://localhost:1935/live/desktop";
r = RTMP_Alloc();
RTMP_Init(r);
RTMP_SetupURL(r, (char*)uri);
RTMP_EnableWrite(r);
RTMP_Connect(r, NULL);
RTMP_ConnectStream(r,0);
}
};
EPIC FACE PALM
Самые глубокие извинения
Мой класс называется RTMP
Спасибо @vard