• ベストアンサー

C++開発アプリとDLLとで同じ領域のデータを共有するには

お世話になっています。 ただいまC++でアプリ開発をしていますが、C++で作成したアプリと、DLLとで同じ領域のデータを共有して使いたいと思っています。 C++で外部で宣言した変数(構造体)のデータをDLLで参照して、内容を変更、C++アプリで変更した内容を参照して処理すると言う具合です。 DLLの方は既に作成済みで、引数としてC++アプリのデータを渡すことが出来ないので、どうにかしてC++で宣言した変数を参照したいのですが。 よろしくお願いします。

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

  • ベストアンサー
  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.3

No.1の補足より > やはり、処理の度にDLLへ構造体のポインタを渡さないといけないのでしょうか? DLLとアプリは同じアドレス空間で動作しますので、通常は初期化時にポインタを渡しておけば十分です。 おそらくアプリ側での構造体の変更方法が拙いのだと思います。構造体の内容を変更する積もりで別の構造体と取り替えたりしていませんか。 # ポインタに別の構造体を代入していませんか

riverman2005
質問者

お礼

ありがとうございます。 プログラムの方確認してみます。

その他の回答 (2)

  • rinkun
  • ベストアンサー率44% (706/1571)
回答No.2

DLLを修正せずにどうやってアプリ側のデータを変更するつもりですか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

DLLで内容を変更する関数を作って置いて、それをC++から構造体へのポインタを引数に呼び出せばいいのでは? 勘違いコメントだったらすみません

riverman2005
質問者

補足

回答ありがとうございます。 現在、初期化処理時に、DLLに構造体のポインタを渡しています。 DLL側は、受け取ったポインタをグローバルで持っていて、ある関数をコールすると、そのポインタを参照して、内容を変更するようになっています。 DLL内での変更は正しく反映されるようですが、 C++側で構造体の内容を変更して、その後にDLLの関数をコールしても、変更内容が反映されていないようなのです。 やはり、処理の度にDLLへ構造体のポインタを渡さないといけないのでしょうか?

関連するQ&A