1

私はGNATGPS2012を使用しています。また、一部のライブラリでは、プログラムを正常にリンクするために「-mwindows」オプションを使用する必要があります(実際にはAda / C ++が混在しています)。

プログラムは2つの場合に正常に動作します:1)GNATランチャーを介して起動する場合(つまり、ツールバーの上部にある三角形のボタン)-その場合はすべて問題ありません2)Windowscmdまたはexplorerとは別に「.exe」を起動する場合エイダ側からテキストを出力しないでください。

しかし(!)Windowsのcmdまたはexplorerとは別にプログラムを起動する場合:1)PutまたはPut_Line関数を呼び出す->プログラムはすぐに終了します(エラーなし、例外なし、終了するだけです)2)C++側からprintfを呼び出すと無視されます

別の混合Ada/C ++の単純なサンプルで、「-mwindows」リンカーオプションがAdaリンカーに追加されたときにこの問題が発生することを確認しました。

GNATプロジェクトからexeフォルダにdllをコピーしようとしましたが、役に立ちませんでした。

助けてくれませんか?ありがとう!

4

2 に答える 2

2

これは、Ada RTL の起動に失敗したことが原因である可能性があります。

あなたが望む操作は だと思いますadainit()

于 2012-08-07T03:57:02.980 に答える
2

FSF GNAT User Manualによると、-mwindowsコンソールがないことを意味します。Put_Lineまたはprintf出力はどこに行くのでしょうか?私の推測では、Ada 呼び出しは例外を発生させ、プログラムを (黙って) 終了させますが、C 呼び出しは事実上何もしません。

しかし、私が正しければ、GPS 内の動作について何の説明もありません。

于 2012-08-07T19:50:07.107 に答える