ランタイムライブラリの指定を「/MT」、「/MTd」にするDLLでエラーになります。
早速ですが、ランタイムオプションを/MT、/MTdと指定した場合、testprg.exeは
[testprg] [testdll]
┌──────┐ ┌──────┐
│testprg.obj │ │testdll.ISOの拡張子は何ですか
obj │
├──────┤+├──────┤
│CRT │ │CRT │
└──────┘ └──────┘
となり、別々のCRTがスタティックリンクされ、別々のセグメントを持ち、お互いのセグメントにはアクセスできないと理解しました。
アメリカの挨拶を作成し、印刷、編集する方法について説明します。のcptファイル
ちなみに、ランタイムオプションを/MD、/MDdと指定した場合のtestprg.exeは
[testprg] [testdll]
┌──────┐ ┌──────┐ ┌──┐
│testprg.obj │+│testdll.obj │+│CRT │
└──────┘ └──────┘ └──┘
となり、共通のCRTを利用するため、お互いのアクセスが可能となるとも理解しました。
ちなみに、「インポートライブラリを無視」オプションを「いいえ」から「はい」に変更しても現象は変わりませんでしたので、ここで報告させて頂きます。
展開する方法について説明します。 EX-ファイル
しかし、DLLはDynamic Link Libraryなのですから、いくらスタティックリンクの指示があったとしても、DLL作成時にCRTまでスタティックリンクしなくても・・・とも思うのですが・・・(DLLなのですから、メインプログラムのリンク時もしくはDLLロード時にアドレスの解決すればいいと思うのですが・・・)。
コンパイラ、Windowsの仕様とあれば仕方がありませんが・・・。
いろいろと有難う御座いました。
0 comments:
Post a Comment