VCでVB ActiveX DLLと文字列を含む構造体をやり取りするには?

解決


mikage  2006-05-26 23:56:36  No: 61952

VB(6)のActiveX DLLをVC(6)で使用した所不具合が発生してしまいました。

やりたい事はVCからVB ActiveX DLL内の関数を呼び出し、
構造体に結果を受け取るという内容です。
ですが、以下のようにして結果を受け取ると
VBから処理が戻ってきた、
*の部分でtTest.cにとんでもない値が入ってしまいます。

原因と対処方法が分かる方いましたらご教授下さい。
条件として、VB側の構造体は変える事が出来ないということです。
変更できるのはVC側のみです。
よろしくお願いします。

---------VB側(class AtxTest)---------

Public Type Test 
a As Double 
b As String 
c As Double 
End Type 

Public Function TestApi( ByRef Buf As Test ) 
    Buf.a = 1: Buf.b = "TEST": Buf.c = 2 
End Function 

---VC側---- 
#import でVB ActiveX DLLのタイプライブラリ情報読み込み、 
Com関連初期化してインターフェース取得後以下のように上記関数呼び出し

_CAtxTest *pAtxTest;

インターフェース取得等

Test tTest; 
memset( &tTest, 0, sizeof(tTest) ); 
pAtxTest->TestApi( &tTest ); 
double dblC = tTest.c;      // *問題の箇所



mikage  2006-05-27 02:04:00  No: 61953

すみません、質問の情報が足りていませんでした、
tTest.a, tTest.bについては予測通り
a = 1, b = "TEST"の結果が得られています。
c = 5.785E+500のような数値になっています。
bの中身の確認はCStringを用意し、
AfxBSTR2CStringを使用して確認しました。
以上、何か気づきましたらご教授お願いします。


Multi Posting  2006-05-27 06:58:58  No: 61954

http://m--takahashi.com/cgi.cgi?13964


mikage  2006-05-28 11:58:23  No: 61955

マルチポストがイケナイということですかね?
どこに質問しても返答がないから分かる人が居るところを探してた
わけですが、
それに解決したらマルチポスト先全部に解決報告もする予定でした、
とはいえ、ご教授して頂ける方が居ないようなので、
自分、もしくは他の所で質問するようにするため、解決としておきます。


雑感  2006-05-29 13:52:18  No: 61956

回答は教えないから読み流していいよ。

>マルチポストがイケナイということですかね?

たぶんね。

>どこに質問しても返答がないから分かる人が居るところを探してたわけですが、

たかだか数日で返答がないとか書かれてもさ。

>それに解決したらマルチポスト先全部に解決報告もする予定でした、

最初にかこうよ。後だしじゃんけんで納得してもらうのは難しいさ。

> 自分、もしくは他の所で質問するようにするため、解決としておきます。

がんばって。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加