
こんにちは、honiyonです。
複数アプリケーションからそれぞれコールバック関数を登録してもらい、状況に応じてそれぞれのコールバック関数を呼び出す、というDLLを作成しています。
しかし現在、呼び出しアプリケーションごとにメモリ空間が独立してしまい、コールバック情報を同一空間内で管理出来ずに困っています。
旧VerのDelphiで16bit DLLなら、interface部に定義した変数、オブジェクトはDLL内で同一空間内で共有出来るようですが、これをDelphi6 32bitDLLで行う事は不可能でしょうか? もしくは、その他の方法で独立メモリ空間を作らないようにする方法はありますでしょうか?
不可能な場合、CreateFileMappingが次に有効な手段として候補に挙がると思います。CreateFileMappingで管理クラスのポインタを渡してクラス共有というのは現実的な手法でしょうか?
よろしくお願いいます(..
No.1ベストアンサー
- 回答日時:
Delphiは無知なので一般的な意見です。
メモリマップドファイル(共有メモリ)は現実的だと思います。特に16->32bit移行時には良く使われた手法ではないかと思います。
片やDLLの共有領域はVC++等では共有セグメントを指定すれば可能ですが、Delphi(特にLinker)でどのような扱いになるのか???
Win32の寿命、その他から、個人的には共有メモリを推します。

No.2
- 回答日時:
私もDelphiは知らないので、一般的な意見を…。
CreateFileMapping による共有メモリが有効だと思いますが、「管理クラスのポインタを渡して」という方法でうまくいくのかどうかは分かりません。必要なデータだけを共有メモリにおくべきだと思います。
複数アプリからということなので、アプリごとに異なるデータをやり取りするのなら、ウィンドウメッセージを使うという方法もあります。対象アプリにはウィンドウハンドルを登録してもらって、独自のメッセージコード(WM_USER以降)やWM_COPYDATAメッセージなどでデータをやり取りするのも一つの手です。Delphiでメッセージ処理がどのように行われているのかはよく知りませんが…。
この回答への補足
こんにちは、honiyonです。
お礼が遅くなり申し訳ありませんm(_ _)m
失礼ながらここにまとめてお礼させて頂きます。
調査したところ、メモリ空間が完全に独立してしまい、ポインタを共有したところで、渡された側でデータを参照できませんでした。
今回共有したかったデータはクラス型であったり、少々無理を感じたので設計そのものを見直す事にしました。
ご回答有難うございました(。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
- その他(学校・勉強) この中で間違ってある説明はありますか?詳しい方に教えていただきたいです。 A. 1つのプログラムが複 2 2023/07/14 01:15
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- 政治 中国は一票の格差4倍で、日本は3倍ですが、それでも日本は民主主義国なら中国も同じですよね? 2 2023/03/16 04:52
- 不動産業・賃貸業 賃貸契約契約の解除 1 2022/11/07 18:02
- 分譲マンション 総会前にきて、管理会社のフロントマンに振り回され役員一同が困っています。 5 2023/05/15 03:12
- その他(教育・科学・学問) 関数、写像について 1 2022/04/10 23:45
- 物理学 ベクトルと座標系につきまして 1 2022/04/03 06:23
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- 弁護士・行政書士・司法書士・社会保険労務士 遺産分割協議書の原本と印鑑証明書のコピーについて教えて下さい。 5 2022/05/03 13:43
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
数学、プログラミング、物理、...
-
画像生成AIのプロンプトの作り...
-
Python... 環境設定 初心者です...
-
OS入ってる機器のソフト・アプ...
-
pip --versionがエラーになる
-
パイソンのソースコードをChatG...
-
pythonの実行に関する質問
-
Python 3.12.2 か一番最新のパ...
-
CSVファイルの複数行削除
-
Webサイト内に埋め込んだmp4動...
-
ExcelVBAでFormulaR1C1を列範囲...
-
Pythonのエラーメッセージをコ...
-
ネットワークフォルダの中身を...
-
Pythonで仮想通貨の自動売買が...
-
AIの登場でプログラマーたちが...
-
Google ColaboでGUI作成
-
Pythonについて。
-
HTMLソースが表示のページのも...
-
MOVEコマンドでサブフォルダー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
CSVファイルの複数行削除
-
OS入ってる機器のソフト・アプ...
-
Python 3.12.2 か一番最新のパ...
-
pythonの実行に関する質問
-
パイソンのソースコードをChatG...
-
画像生成AIのプロンプトの作り...
-
数学、プログラミング、物理、...
-
pip --versionがエラーになる
-
Google ColaboでGUI作成
-
Python... 環境設定 初心者です...
-
HTMLソースが表示のページのも...
-
ネットワークフォルダの中身を...
-
MOVEコマンドでサブフォルダー...
-
google Colabでmatplotlibの描...
-
VBAでパワーシェルを実行したい...
-
Pythonでの文字列からfloatへの...
-
Webサイト内に埋め込んだmp4動...
-
初心者powershellのPS1ファイル...
-
pythonについて(初心者です)
おすすめ情報