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; // *問題の箇所
・
・
略
すみません、質問の情報が足りていませんでした、
tTest.a, tTest.bについては予測通り
a = 1, b = "TEST"の結果が得られています。
c = 5.785E+500のような数値になっています。
bの中身の確認はCStringを用意し、
AfxBSTR2CStringを使用して確認しました。
以上、何か気づきましたらご教授お願いします。
http://m--takahashi.com/cgi.cgi?13964
マルチポストがイケナイということですかね?
どこに質問しても返答がないから分かる人が居るところを探してた
わけですが、
それに解決したらマルチポスト先全部に解決報告もする予定でした、
とはいえ、ご教授して頂ける方が居ないようなので、
自分、もしくは他の所で質問するようにするため、解決としておきます。
回答は教えないから読み流していいよ。
>マルチポストがイケナイということですかね?
たぶんね。
>どこに質問しても返答がないから分かる人が居るところを探してたわけですが、
たかだか数日で返答がないとか書かれてもさ。
>それに解決したらマルチポスト先全部に解決報告もする予定でした、
最初にかこうよ。後だしじゃんけんで納得してもらうのは難しいさ。
> 自分、もしくは他の所で質問するようにするため、解決としておきます。
がんばって。
ツイート | ![]() |