[問題] wchar* copy to BSTR*

看板C_and_CPP (C/C++)作者 (旺來)時間15年前 (2010/11/02 20:56), 編輯推噓1(1018)
留言19則, 5人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 不知如何把wchar* 型別字串的內容 copy到 BSTR* 型別字串 或是把 char[] 型別字串 copy到 BSTR* 型別字串 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) VS2008 Windows Phone Builder ~_~原PO卡很久 用過wcscpy等許多方法 可是都沒辦法copy成功 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.87.71.10

11/02 21:09, , 1F
不同型別...那就 memcpy吧 XD
11/02 21:09, 1F

11/02 21:47, , 2F
BSTR*+4開始才是字串內容吧,int *len = BSTR
11/02 21:47, 2F

11/02 21:49, , 3F
*len = newlen ; wcscpy(BSTR*+4,wchar*,newlen);
11/02 21:49, 3F

11/02 21:49, , 4F
以上是亂猜
11/02 21:49, 4F

11/02 22:01, , 5F
我發現我的問題最主要不是在copy字串
11/02 22:01, 5F

11/02 22:02, , 6F
而是我要從.dll傳回到C# (利用BSTR*傳) 關鍵在傳回去
11/02 22:02, 6F

11/02 22:02, , 7F
0.0
11/02 22:02, 7F

11/02 22:06, , 8F
從c#端傳string到vs2008 PB寫的dll(BSTR *)
11/02 22:06, 8F

11/02 22:07, , 9F
然後BSTR*要COPY wchar*型別字串 再從.dll回傳給c#端
11/02 22:07, 9F

11/02 22:14, , 10F
照我的理解BSTR*轉wchar*, wchar* w = BSTR+4;
11/02 22:14, 10F
想請問s大意思是否如下 如果是 BSTR* bsrString1; wchar_t* wchString2; (經過一些code wchString2已取得需要的字串) 要用 wcscpy(bsrString1+4, wchString2, wcslen(bsrString1)) ? ※ 編輯: ownlai 來自: 219.87.71.10 (11/02 22:26)

11/02 22:34, , 11F
wcscpy(bsrString1+4, wchString2, wcslen(wchString2)
11/02 22:34, 11F

11/02 22:35, , 12F
wcscpy(wchString2,bsrString1+4,*(int*)bsrString)
11/02 22:35, 12F

11/02 22:36, , 13F
不過我實際使用wcscpy時候第一個參數都得用*bsrString1
11/02 22:36, 13F

11/02 22:36, , 14F
才有辦法compile過
11/02 22:36, 14F

11/02 22:40, , 16F
如果可以的話把BSTR*的字串部份跟*wchar指向同一塊
11/02 22:40, 16F

11/02 22:40, , 17F
修改wchar*也會改到BSTR*
11/02 22:40, 17F

11/02 22:42, , 18F
最後把BSTR*的Length prefix修正
11/02 22:42, 18F

11/02 22:57, , 19F
BSTR 指的位址的"前"4個 bytes 是字串的 bytes count.
11/02 22:57, 19F
文章代碼(AID): #1Cq0fatp (C_and_CPP)
文章代碼(AID): #1Cq0fatp (C_and_CPP)