使用 pjsua 和 pjsua-jni 文件夹时遇到了错误。作为 C 和 C++ 的新手,我边走边学。我有编程经验,所以我希望我不是那么出类拔萃。
我从make文件中得到的错误是
nativesrc/pjsua_wrap.cpp:3843:23: error: invalid use of non-static data member 'param'
pjmedia_codec_fmtp::param *arg2 ;
~~~~~~~~~~~~~~~~~~~~^~~~~
nativesrc/pjsua_wrap.cpp:3843:30: error: use of undeclared identifier 'arg2'
pjmedia_codec_fmtp::param *arg2 ;
^
nativesrc/pjsua_wrap.cpp:3849:3: error: use of undeclared identifier 'arg2'
arg2 = *(pjmedia_codec_fmtp::param **)&jarg2;
^
nativesrc/pjsua_wrap.cpp:3849:32: error: invalid use of non-static data member 'param'
arg2 = *(pjmedia_codec_fmtp::param **)&jarg2;
~~~~~~~~~~~~~~~~~~~~^~~~~
nativesrc/pjsua_wrap.cpp:3849:40: error: expected expression
arg2 = *(pjmedia_codec_fmtp::param **)&jarg2;
^
nativesrc/pjsua_wrap.cpp:3852:25: error: invalid use of non-static data member 'param'
pjmedia_codec_fmtp::param *b = (pjmedia_codec_fmtp::param *) arg1->param;
~~~~~~~~~~~~~~~~~~~~^~~~~
nativesrc/pjsua_wrap.cpp:3852:32: error: use of undeclared identifier 'b'
pjmedia_codec_fmtp::param *b = (pjmedia_codec_fmtp::param *) arg1->param;
^
nativesrc/pjsua_wrap.cpp:3852:57: error: invalid use of non-static data member 'param'
pjmedia_codec_fmtp::param *b = (pjmedia_codec_fmtp::param *) arg1->param;
~~~~~~~~~~~~~~~~~~~~^~~~~
nativesrc/pjsua_wrap.cpp:3852:64: error: expected expression
pjmedia_codec_fmtp::param *b = (pjmedia_codec_fmtp::param *) arg1->param;
^
nativesrc/pjsua_wrap.cpp:3853:40: error: use of undeclared identifier 'b'
for (ii = 0; ii < (size_t)8; ii++) b[ii] = *((pjmedia_codec_fmtp::param *) arg2 + ii);
^
nativesrc/pjsua_wrap.cpp:3853:71: error: invalid use of non-static data member 'param'
for (ii = 0; ii < (size_t)8; ii++) b[ii] = *((pjmedia_codec_fmtp::param *) arg2 + ii);
~~~~~~~~~~~~~~~~~~~~^~~~~
nativesrc/pjsua_wrap.cpp:3853:78: error: expected expression
for (ii = 0; ii < (size_t)8; ii++) b[ii] = *((pjmedia_codec_fmtp::param *) arg2 + ii);
我不知道如何声明这个参数。在查看 codecs.h 文件时,我发现了这个
typedef struct pjmedia_codec_fmtp
{
pj_uint8_t cnt; /**< Number of parameters. */
struct param {
pj_str_t name; /**< Parameter name. */
pj_str_t val; /**< Parameter value. */
} param [PJMEDIA_CODEC_MAX_FMTP_CNT]; /**< The parameters. */
} pjmedia_codec_fmtp;
所以它调用参数结构的方式是pjmedia_codec_fmtp::param *arg2
. 那正确吗?我知道::
通常是您调用静态方法的方式,但您也是这样调用结构的吗?
无论如何帮助会很棒
这是它引发第一个错误的代码
pjmedia_codec_fmtp *arg1 = (pjmedia_codec_fmtp *) 0 ;
pjmedia_codec_fmtp::param *arg2; // Error