2
當我調用該函數RTMP_SetupURL從德爾福的網址是不是在記錄RTMP更新的地圖,我tanslated DLL函數那樣:LIBRTMP德爾福:該DLL
int RTMP_SetupURL(RTMP *r, char *url);
function RTMP_SetupURL(var r:RTMP; url:PAnsichar):integer;
和AVAL聲明如下記錄即:
AVal = record
av_val: PansiChar;
av_len: integer;
end;
之前設置的URL有一個初始化的問題,我的記錄(RTMP)不正確初始化,下面我的紀錄:
PChar = PAnsiChar;
uint32_t = LongWord;
uint8_t = Byte;
int8_t = char;
int32_t = LongInt;
unsigned_int = LongWord;
unsigned_short = Word;
int16_t = smallint;
cchar = Char;
cint = LongInt;
RTMP = record
m_inChunkSize : cint;
m_outChunkSize : cint;
m_nBWCheckCounter : cint;
m_nBytesIn : cint;
m_nBytesInSent : cint;
m_nBufferMS : cint;
m_stream_id : cint;
m_mediaChannel : cint;
m_mediaStamp : uint32_t;
m_pauseStamp : uint32_t;
m_pausing : cint;
m_nServerBW : cint;
m_nClientBW : cint;
m_nClientBW2 : uint8_t;
m_bPlaying : uint8_t;
m_bSendEncoding : uint8_t;
m_bSendCounter : uint8_t;
m_numInvokes : cint;
m_numCalls : cint;
m_methodCalls : PRTMP_METHOD;
m_vecChannelsIn : array[0..(RTMP_CHANNELS)-1] of PRTMPPacket;
m_vecChannelsOut : array[0..(RTMP_CHANNELS)-1] of PRTMPPacket;
m_channelTimestamp : array[0..(RTMP_CHANNELS)-1] of cint;
m_fAudioCodecs : double;
m_fVideoCodecs : double;
m_fEncoding : double;
m_fDuration : double;
m_msgCounter : cint;
m_polling : cint;
m_resplen : cint;
m_unackd : cint;
m_clientID : AVal;
m_read : RTMP_READ;
m_write : RTMPPacket;
m_sb : RTMPSockBuf;
Link : RTMP_LNK;
end;
PRTMP = ^RTMP;
然後我打電話:
var MY_RTMP: RTMP;
MY_RTMP := RTMP_Alloc;
RTMP_Init(MY_RTMP);
所有的記錄被初始化除外初始化URL時使用「鏈接」的紀錄。 我想這個記錄沒有正確申報
不,「PAnsichar」是正確的。這就是你需要與'char *'匹配的東西。怎麼樣調用約定。你的Delphi版本應該使用'cdecl'嗎?兩種語言的RTMP定義是什麼? –