線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2038
推到 Plurk!
推到 Facebook!

想透過VB呼叫BCB寫的DLL並傳遞字串一問

尚未結案
achigo
一般會員


發表:6
回覆:15
積分:4
註冊:2005-05-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-15 14:33:58 IP:210.80.xxx.xxx 未訂閱
我想透過VB呼叫BCB寫的DLL並傳遞字串時發生資料不正確的問題 (VB的執行檔已經與DLL檔同目錄) 程式目的:想從VB傳入三個字串,並處理後回傳 BCB Code
/*****************************************************************/
//test.h
typedef void(__stdcall *ADDSTRING)(char *_a, char *_b, char *_c);
DLL_EXPORT void __stdcall AddString(char *_a, char *_b, char *_c);    //test.cpp
DLL_EXPORT char* __stdcall AddString(char *_a, char *_b, char *c)
{
   char *temp;
   temp = _a   _b   _c;
   return temp;
}
/*****************************************************************/
VB Code
'*****************************************************************
'DLL 宣告
Declare Function Adds Lib "Achigo.dll" Alias _
"AddString" (ByVal a As String, ByVal b As String, ByVal c As String)    'VB 主程式
Private Sub Command1_Click()    Dim A As String
Dim B As String
Dim C As String    A = "Hello"
B = "World"
C = "This is my first."
Call Adds(A, B, C)    End Sub
'*****************************************************************
專注完美近乎苛求~~
------
專注完美近乎苛求~~
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-15 23:43:59 IP:219.84.xxx.xxx 未訂閱
achigo你好: 你所放上的程式碼有二個問題,一個是C語言字串相加不是單純地就把指標加在一起,詳細請參考C的相關書本。另一個是VB內建字串型別是wide char,而且不是單純的指標型態。用Dll不是適當的作法,建議用COM傳BSTR。
achigo
一般會員


發表:6
回覆:15
積分:4
註冊:2005-05-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-16 00:37:33 IP:61.66.xxx.xxx 未訂閱
引言: achigo你好: 你所放上的程式碼有二個問題,一個是C語言字串相加不是單純地就把指標加在一起,詳細請參考C的相關書本。另一個是VB內建字串型別是wide char,而且不是單純的指標型態。用Dll不是適當的作法,建議用COM傳BSTR。
謝謝你的回答,我知道在C裡面字串相加要使用strcat的函式 不過我的重點不是在這,我現在遇到的問題是VB的字串型態是 BSTR而我不知道要在C上要如何轉換這樣的型態^^ 專注完美近乎苛求~~
------
專注完美近乎苛求~~
chihming
一般會員


發表:0
回覆:1
積分:0
註冊:2003-07-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-19 11:31:19 IP:203.203.xxx.xxx 未訂閱
BSTR => 使用 wchar_t * wchar_t *pMsgBuff; int len; String Str; Str="Your String"; len=Str.Length(); pMsgBuff=(wchar_t *)malloc(len*2 10); StringToWideChar(Str,pMsgBuff,len*2 10); 然後將 pMsgBuff 當成 BSTR 使用
achigo
一般會員


發表:6
回覆:15
積分:4
註冊:2005-05-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-19 21:18:03 IP:59.112.xxx.xxx 未訂閱
引言: BSTR => 使用 wchar_t * wchar_t *pMsgBuff; int len; String Str; Str="Your String"; len=Str.Length(); pMsgBuff=(wchar_t *)malloc(len*2 10); StringToWideChar(Str,pMsgBuff,len*2 10); 然後將 pMsgBuff 當成 BSTR 使用
chihming大大感謝您的提供指導,不過可否請問一下 pMsgBuff=(wchar_t *)malloc(len*2 10)這裡為什麼要 10呢? 搞不懂! 專注完美近乎苛求~~
------
專注完美近乎苛求~~
系統時間:2024-04-23 18:50:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!