VS2012 LibRTMP将c包含在c ++中

时间:2014-05-20 09:14:47

标签: c++ c visual-studio-2012

我在我的exe生成的调试文件夹中有Librtmp.dll。标题和辅助代码文件在我的项目中可用,包括如下所示。

使用这个包括....我可以使用libllmp和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。

Understanding typedefs for function pointers in 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);
    }
};

1 个答案:

答案 0 :(得分:0)

EPIC FACE PALM

最深的道歉

我的班级名为RTMP

谢谢@vard