• ベストアンサー

Win98上でDOS版のMSC

こんばんは。Win98上でMicrosoftC Ver6.0を使っているのですが、うまく動作しません。 まず、Makeすると「Avaliabe memory 493148 bytes」と出て、LINK : fatal error L2041 : stack plus data exceed 64K とエラーが出てしまいます。 HELPで調べようとしたのですが、「MS-DOSのHELPなので開けません。」と出てしまいます。 Win98上で使用している方がいましたら是非お願い致します。

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

  • ベストアンサー
  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.2

このエラーコード(L2041)は16ビット版のMicrosoftのリンカに共通のエラーです。 VisualStudio付属のMDSNライブラリにも対処法が載っていますので参照してください。 要約すると… 状況: アプリケーションはデフォルトデータセグメントサイズを超えるスタック+データを要求している 対応: 1.スタックサイズを抑えるようなアルゴリズムに変更する 2.コンパイルオプションでLargeまたはHugeを指定する 3.すでにLarge/Hugeモデルの場合、/Gtコンパイラオプションでデータのメモリ配置を制御する /Gtオプションは「/Gt数値」と指定し、「数値」以下のサイズを持つデータをデフォルトデータセグメント以外のセグメントに配置します。 /Gtオプションを省略した場合、32Kバイト以下のデータを全てデフォルトデータセグメントに配置するので、64Kバイトを超える可能性が高くなります。 /Gtだけ指定した場合、nは256が設定されます。

UNKO
質問者

お礼

ご返答ありがとうございます。 /Gt64にして、exeが作成されました! ありがとうございましたm(__)m

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • aptiva
  • ベストアンサー率36% (193/529)
回答No.1

MS-C、懐かしいですね。(私もまだ使用するかもしれませんが^^;) 私も久しく使ってないので自信無しですが、コンパイルした結果、データエリアが64Kを超えてしまったためではないでしょうか。 メモリモデルをLargeモデルにして、コンパイルしてみてはどうでしょうか?(サイズは大きくなると思いますが。) メモリモデルはコンパイルオプションで変えられたと思います。 Win98うんぬんは多分関係無いと思います。

UNKO
質問者

お礼

早速のご返答ありがとうございます。私も懐かし過ぎて全部忘れてしまいました^^;) 一応コンパイルオプションをLargeモデルにしているのですがダメなんです…。-cでコンパイルのみだと大丈夫なのですが、MAKEやLINKだとダメで、LINK時にこのエラーが出ているみたいです。なぜなんでしょう…

すると、全ての回答が全文表示されます。

関連するQ&A