• ベストアンサー

DLLからEXEに構造体を渡すとき

すいませんが、DLLからEXEに構造体を渡すときに どのようにしたらいいのでしょうか? 調べてみても EXE→DLLには載っているのですが、 DLL→EXEには調べ方が悪いのかわかりませんでした。 よろしくお願いいたします。 typedef struct _KOUZOU { int a; int b; } KOUZOU; (ここをどのように?) CALLBACK test() { KOUZOU kouzou1; kouzou1.a=1; kouzou1.b=2; return (ここをどのように?); }

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.1

>return (ここをどのように?); return &kouzou1;(ただしkouzou1はグローバルかstatic) 普通はExe側が確保したメモリのポインタを dllに渡し、そのポインタに構造体の内容をコピー する。 test( KOUZOU* Out ); memcpy ( Out , &kouzou1 , sizeof(KOUZOU) );

gotyan
質問者

お礼

有り難うございます (ここをどのように?) CALLBACK test() CALLBACK の前はどのようにしたらいいでしょうか? やってみたのですが *_w64からintには変換できませんと出ます。 申し訳ないですm(__)m

その他の回答 (2)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

>(ここをどのように?) CALLBACK test() KOUZOU* CALLBACK test()

gotyan
質問者

お礼

有り難うございました 助かります。

  • GOGOV
  • ベストアンサー率54% (12/22)
回答No.2

ポインタ使用の方が一般的な気がします。 例えば、 呼び出し側  KOUZOU kouzou;  test(&kouzou); DLL側  void test(KOUZOU *kouzou)  {   kouzou->a = 1;   kouzou->b = 2;   return;  }

gotyan
質問者

お礼

有り難うございます。 一度 ポインタでもやってみます。 現在勉強中ですのでいろいろやってみます。

関連するQ&A