我一直在嘗試使用NDK將一些舊的Symbian C++代碼移植到Android上。C/C++新手使用Android NDK移植遺留代碼,得到編譯錯誤
我幾乎沒有C或C++的知識,所以它是一件苦差事,但必須完成。
我的主要問題是,我無法移植我認爲是使用Android NDK提供的小型C/C++子集的Symbian專用代碼。
下面是我用的cygwin
我想知道如果任何人都可以就如何處理這些錯誤指向正確的方向我得到的編譯錯誤的照片嗎?例如TBool/Int/TUint/RPointerArray/RSocket是一個Symbian原語,這就是爲什麼它不會編譯或者是其他的東西?
什麼是ISO C++?
任何教程,指南或技巧和幫助將不勝感激。
編輯:
這裏是.h文件,我試圖導入,然後輸出從編譯器代碼段的代碼片段。
有人能指導我如何將這個Symbian特定的代碼移植到正常的C++嗎?
如果我得到的最新的Symbian具體怎麼改,我相信我可以改變,然後開始端口,其餘自己
#ifndef __RTPSTREAM_H__
#define __RTPSTREAM_H__
class CRTPParser;
class MDataRecorderObserver
{
public:
virtual void DataRecorded(const TDesC8& aData, TUint aCodec, TUint aFramesizeMs)=0;
};
class MRTPStreamDataObserver
{
public:
virtual void AudioDataSent()=0;
virtual void DataReceived(const TDesC8& aData,TUint aCodec, TBool aMarker, TUint aSeq, TUint aTime)=0;
virtual void DataReceived(const TDesC8& aData)=0;
};
$ make APP=ndk-socket
Android NDK: Building for application 'ndk-socket'
Compile++ thumb: socket <= apps/ndk-socket/project/jni/rtpstream.cpp
In file included from apps/ndk-socket/project/jni/com_ciceronetworks_utils_RTPJn
i.h:2,
from apps/ndk-socket/project/jni/rtpstream.cpp:4:
build/platforms/android-3/arch-arm/usr/include/jni.h:489: note: the mangling of
'va_list' has changed in GCC 4.4
In file included from apps/ndk-socket/project/jni/rtpstream.cpp:11:
apps/ndk-socket/project/jni/rtp/RTPStream.h:15: error: ISO C++ forbids declarati
on of 'TDesC8' with no type
apps/ndk-socket/project/jni/rtp/RTPStream.h:15: error: expected ',' or '...' bef
ore '&' token
apps/ndk-socket/project/jni/rtp/RTPStream.h:23: error: ISO C++ forbids declarati
on of 'TDesC8' with no type
apps/ndk-socket/project/jni/rtp/RTPStream.h:23: error: expected ',' or '...' bef
ore '&' token
apps/ndk-socket/project/jni/rtp/RTPStream.h:24: error: ISO C++ forbids declarati
on of 'TDesC8' with no type
apps/ndk-socket/project/jni/rtp/RTPStream.h:24: error: expected ',' or '...' bef
ore '&' token
apps/ndk-socket/project/jni/rtp/RTPStream.h:24: error: 'virtual void MRTPStreamD
ataObserver::DataReceived(int)' cannot be overloaded
apps/ndk-socket/project/jni/rtp/RTPStream.h:23: error: with 'virtual void MRTPSt
reamDataObserver::DataReceived(int)'
apps/ndk-socket/project/jni/rtp/RTPStream.h:30: error: 'TInt' has not been deca
red
是的,這些都是非標準類型..你的代碼似乎充滿了Symbian特定的代碼。不確定你的代碼是做什麼的,它是商業邏輯嗎?一些算法的實現?用戶界面?對於ISO C++,請閱讀C++ http://en.wikipedia上的wiki文章。組織/維基/ C_plus_plus。 – Ivan 2010-04-19 17:11:34
需要注意的是,您可以通過點擊菜單欄左端小小的「c:」圖標,從菜單欄中選擇「編輯 - >標記」來複制Windows命令提示窗口中的文本點擊alt-space),選擇你想用鼠標複製的文本,然後點擊「enter」複製它。比screencap更容易閱讀,然後您可以選擇它的一些位置進行Google搜索。 – 2010-04-20 04:13:36
嗨伊萬,代碼是一個rtp流的實現,布魯克斯,謝謝你的提示! – 2010-04-20 08:09:19