我在C++中有一個Win32應用程序。
我想製作的是一個與WinCE兼容的應用程序.exe。我認爲最好改變我的平臺。但是當我在智能設備平臺上運行代碼時,出現很多錯誤!什麼是改變源代碼的最佳方式?將C++代碼從Win32平臺更改爲WinCE
0
A
回答
2
道路可能很簡單,也可能很困難。取決於源代碼。很少有代碼在沒有設備思想的情況下編寫代碼就會毫無改變地工作。第一步是將所有代碼導入以設備SDK爲目標的智能設備項目並嘗試構建它。編譯器和鏈接器會給你一個你必須做的工作的指示。
一些你可能會面臨更大的痛點是:
- Windows CE是Win32的一個子集,因此這是可能的,甚至有可能,該代碼使用CE沒有可用的API。你必須爲這些尋找替代品。
- Windows CE非常偏向於Unicode,大多數Win32 API在CE中甚至沒有ASCII版本。桌面代碼的加載是基於ASCII的。你必須重做所有的代碼。使用TCHAR宏可以幫助保持代碼向後兼容。
- 如果代碼使用任何內聯ASM,它可能會使生活困難,特別是如果您要移動到代碼不同並且不支持內聯ASM的ARM。
- CE中的UI/GDI東西實質上比桌面下更有限。用戶界面可能很難輕鬆移植。
- 你在使用第三方庫嗎?如果是這樣,他們是否有CE支持,或者你能得到源代碼?
還有很多其他小小的「陷阱」,但不知道任何關於代碼庫的知識,很難多說。再一次,編譯器和鏈接器將首先讓你知道你在你之前做了多少工作。
1
我會建議保持win32版本,這是更容易開發和調試代碼。在某些Windows CE設備上,您可能無法在調試器中運行代碼。
如果您的應用程序編譯時沒有UNICODE,那麼每次調用需要字符串的API函數時都必須將CHAR *字符串轉換爲WCHAR *字符串。如果您只是簡單地將應用程序轉換爲UNICODE,您將節省大量時間。否則使用TCHAR無處不在。
你會發現一些代碼需要Windows CE平臺的特殊版本,而Win32版本則不同。然後你可以使用IF-DEFS:
#if defined(_WIN32_WCE)
/// windows ce code version
#else
/// win32 code version
#endif
如果你想移植到Windows CE 5.0中則可以針對內存的限制,準備:每個進程32MB,但實際上不到這是提供給您的代碼。您的設備實際上可以有120 + MB或RAM,要訪問它,您可以使用內存映射文件。
相關問題
- 1. 將Win16 C代碼轉換爲Win32
- 2. 在Win32和WinCE平臺中構建Boost庫RegEx
- 3. AVFoundation將Swift代碼更改爲Objective-C
- 4. 將XAML更改爲C#代碼
- 5. 跨平臺代碼爲appengine
- 6. 從C#代碼更改Firefox代理
- 7. 在.NET中將.NET平臺從3.5更改爲2.0
- 8. 無法將構建平臺從任何CPU更改爲x86
- 9. 將Elastic Beanstalk上的平臺從PHP更改爲Node.js
- 10. 更改平臺win32到64位非託管vC++ dll
- 11. 更改WInCE中編輯控件的顏色(win32)
- 12. golang:在跨平臺調用C++代碼
- 13. 跨平臺C++代碼體系結構
- 14. 在Linux上爲不同的平臺編譯C/C++源代碼
- 15. 將密碼的PHP代碼從MD5更改爲WordPress密碼
- 16. 平臺生成器的WinCE 7.0
- 17. Win32和x64平臺命名
- 18. 是否有可能通過VisualStudio在Windows下編譯WinCE平臺的代碼?
- 19. 從平臺代碼訪問android.provider.Settings.System的值
- 20. 從GWT平臺的URL格式更改「#」
- 21. 從C#託管代碼調用win32 CreateProfile()管理代碼
- 22. 在WinCE平臺上用於webkit的C#Qyoto綁定
- 23. 將代碼從C++改爲C#使用at-commend
- 24. 如何將這段代碼從c改爲C++
- 25. C++ Win32:將掃描代碼轉換爲Unicode字符
- 26. 將行代碼從C++轉換爲C
- 27. 需要更改C++代碼
- 28. 將代碼更改爲永久重複
- 29. 如何將其更改爲僞代碼
- 30. 如何將此代碼更改爲SqlConnection?