剛入職時,公司還沒給我配MAC,只能先在windows裏熟悉代碼。由於用的是cocos2d-x,因而我想把以前在Xcode裏的工程轉移到VS2010裏,沒想到在VS裏新建工程再添加文件,編譯後出現了好多錯誤。下面就把解決這些錯誤的方法寫下來,與你們分享。windows
1.
首先要把文件格式用文本文件另存爲Unicode格式,否則VS會報一些莫名其妙的錯誤。dom
2.
VS裏不能用bzero函數,改成memset.
XCode:
//bzero(fileName, MAX_FILENAME_LENGTH); 改成:函數
VS:
memset(fileName, 0,MAX_FILENAME_LENGTH);google
3.
XCode:
//_fade_in_outSprite->setBlendFunc((ccBlendFunc){GL_ONE,GL_ONE}); code
VS:
將上面的代碼拆分爲兩部分
ccBlendFunc tempBlend = {GL_ONE, GL_ONE};
_fade_in_outSprite->setBlendFunc(tempBlend);繼承
4.
獲取隨機數的函數改成srand()和rand()
XCode:
//arc4random()%6; 遊戲
VS:
srand(time(NULL));
type = rand()%6;it
修改完上面的問題以後,編譯成功,遊戲成功的運行了起來。可我還沒來的及高興,問題就又來了。我剛移動程序裏的精靈,就彈出了一個運行時錯誤,類指 針產生了偏移,很是詭異。個人心情頓時又跌入了谷底……但天無絕人之路,我發現了一條奇怪的警告:「cast between different pointer to member representations, compiler may generate incorrect code。」我google了一下,在這裏找到了解決方法:http://msdn.microsoft.com/en-us/library /1s6193tt.aspx 因而,我按照文中所說將相關的精靈類(DiamondSprite)的基類繼承順序顛倒了一下:io
XCode:
//classDiamondSprite : public cocos2d::CCObject, public cocos2d::SelectorProtocol { 改成:編譯
VS:
class DiamondSprite : publiccocos2d::SelectorProtocol, publiccocos2d::CCObject{
編譯運行,果真沒有再次出現運行時錯誤。至此,咱們已經成功的將工程從XCode轉入VS中。