日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

从NT向solaris 8移植C/C++应用

發布時間:2025/3/19 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从NT向solaris 8移植C/C++应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

從NT向solaris 8移植C/C++應用

客戶端:WINDOWS2000/XP

服務端:NT/SOLARIS/AIX

最近在向solaris 8中移植應用(服務端應用),遇到的問題還不少。

該應用涉及到的東東有:

IBM MQ530相關,TUXEDO8.0? Xeces-c2.4? iconv? zlib

?

問題一:

TUXEDO FML中的中文返回前端是亂碼。但同樣的代碼在NT下沒有問題。

說明:

在該系統中,服務端會將TUXEDOFML轉化為XML再以UTF-8的編碼轉到客戶端,按常理,只要返回前端是的UTF-8的字符編碼,應該沒問題,因此先查返到前端的中文數據,發現果然不是UTF-8,后再服務端單獨拿Xerces做實驗,發現它的確有問題,因為當時服務端的本地編碼應是GBK,但Xerces本身并不支持GBK,因此,把本地編碼轉成UTF-8時變得亂七八糟,后來用一種最快的方法解決了該問題,不用解析器,而是直接拼字符串,代碼也不會很復雜,拼完后用iconv轉成UTF-8即可。

?

問題二:

客戶端的中文到服務端TUXEDO端后也是亂碼

說明:

該問題其實與上面的問題是一樣的,但處理卻有很大不同,首先,由于前端XML數據復雜,因此必須選用解析器也不能靠自己去解析,其次,Xerces應該可以正常解析UTF-8XML文檔,為什么出來得不到UTF-8呢?原因是當從DOM中取得XMLCh型的字符串時,還要調用XMLString::transcode方法得到char *,但這過程中Xerces卻自作聰明的想轉成本地編碼,結果轉出來的東西亂七八糟不能使用,解決方法是從XMLChXMLFormatter直接讓其輸出UTF-8的字符串,再用iconv轉成本地編碼壓入到FML。(從XMLChUTF-8char *應該有比我更好的方法,歡迎指教)

?

問題三:

一運行到使用vector處便core dump!

說明:

試圖pushvector的類型是一個結構體,大體如下:

struct a{

string a1;

string a2

}

后經查,在對結構體賦植前,對其進行了memset操作,類似:

memset(a, 0, sizeof(a));

去掉該操作后,一切正常,原因是,結構體內有復雜類型,應在構造函數中初始化才是安全的,但這些代碼在NT下正常。

?

問題四:

壓入FML內的數據出來后變成了0

說明:

原因是在Fadd時,該字段其實是short型,但卻壓入了一個int型,但FML的操作中只是壓入了最初的兩個字節,取出來時當然也只有最初壓入的兩個字節,這種代碼在字節序不同的機器上運行的結果是不一樣的。

總結

以上是生活随笔為你收集整理的从NT向solaris 8移植C/C++应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。