外部DLL呼び出し時のスタック領域変更をする方法

解決


ACUO  2009-09-29 16:01:40  No: 142584  IP: 192.*.*.*

初めてこちらに書き込みをします。

現在VB6で開発を行っているのですが、
以下の現象が発生し困っています。
VC6++で作成した外部DLLコール時に引数で渡した構造体ポインタのデータが
オーバーフローしてしまうのですが、
2ステップ実行後に、正しい値が格納されます。
自分としては、領域が足りていないのではと考えているので、
確保できるスタック領域の変更はするにはどのうようにしたら良いでしょうか?
また、別に原因として考えられることは何かありますか?
以上、宜しくお願いします。

編集 削除
魔界の仮面弁士  2009-09-29 19:08:47  No: 142585  IP: 192.*.*.*

> また、別に原因として考えられることは何かありますか?
C++ 側と VB 側、それぞれの構造体や関数の定義を見ないと
何とも言えませんが、思いつくところとしては:

・構造体のアライメントは、4バイト単位になっていますか?
http://g-ishihara.com/c_st_01.htm
http://www.int21.co.jp/pcdn/magazine/mado/vbt9001/vbt9001.html

・DLL の呼び出し規約は、(cdeclではなく)stdcallにしてありますか?

編集 削除
ACUO  2009-10-05 14:39:17  No: 142586  IP: 192.*.*.*

返答が遅くなり申し訳ございません。
問題が複数あり、何とか自己解決できました。
構造体内のメンバに、画像アドレスを格納していたのですが
こちらがC++ではポインタのポインタとなっており
別のアドレスを渡してしまっていた為
実際に使用するデータが不明なデータとなっていました。
上記の絡みで、処理中に0割りが発生している事から
引数で渡していた構造体に影響を与えていたようです。
アドバイス有難うございました。

編集 削除