人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

DLL内の関数にistreamオブジェクトやostreamオブジェクトを渡してDLL内で入出力を行うのはうまく動作しないのでしょうか?


●質問者: goblin_the_rat
●カテゴリ:コンピュータ
✍キーワード:DLL オブジェクト 関数
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pyopyopyo
●60ポイント ベストアンサー

うまく動作することは保障されていません.

istreamのようなc++で記述されたclassオブジェクトは,コンパイラのバージョンやコンパイル時のオプションによって違う形式のオブジェクトとしてビルドされます.そのため,DLL自体をビルドしたコンパイラと,DLLを呼び出す側のプログラムをビルドしたコンパイラのバージョンが違うと,オブジェクトの互換性が損なわれ正常に動作しなくなります.

具体例をあげると,sizeof(istream) の値が,つまりistreamオブジェクトの大きさが,DLL側と呼び出し側で異なる,といった事がおきます.

どうしても動かしたい場合は,同一のコンパイラ・同一のコンパイルオプションでDLLとプログラム側を両方ビルドすればとりあえずは動作するようになります.

◎質問者からの返答

やはり同じコンパイラ・同じオプションでビルドしないと駄目ですか。

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ