2

私は MinGW を使用してコード ブロックを扱っており、しばらく取り組んできたコーディング プロジェクトがあります。私が使用してきたプロジェクトはコンソール アプリケーションであり、デバッグ機能はコンソールへの出力に依存しています。

ただし、最近、Windows の 'GetOpenFileName()' 関数を実装して、開いているファイル ボックスをプルアップしようとしたので、ユーザーがファイルを開くのがずっと簡単になりました。ただし、ヘッダーが含まれているコンソール アプリケーションでプロジェクトを使用する場合、MinGW コンパイラは関数を見つけることができないように動作します。ただし、プロジェクトをwin32 GUIに変更すると、コンパイラーが関数を見つけることができることがわかりました(理由は完全にはわかりませんが、それは私だけです)。

問題は次のとおりです。デバッグ情報をコンソールに出力しようとしましたが、もちろんアプリケーションは win32 GUI であり、コンソールが表示されず、デバッグ情報が表示されず、コンソール アプリケーションに戻すことができません。または、Windows オープン ファイル ボックスのコードがコンパイルされません。コンソールを表示しながら、プロジェクトが Windows GUI コードを正しくコンパイルできるようにするにはどうすればよいですか?

デバッグ関数を変更したり、別の関数を使用したりすることはできません。これらの関数は、バック トレース エラーを支援するためにすべてのクラスに記述されており、少なくとも 43 個のファイルがあり、そのほとんどがデバッグ機能を使用しているからです。

4

2 に答える 2

3

したがって、この問題はプロジェクトタイプではなく、設定/コンパイラオプションが原因であるように見えます。コンパイラは関数宣言を問題なく見つけることができますが、リンカは定義を見つけることができないため、文句を言うようになりました。

これを修正するには、正しいライブラリにリンクする必要があります(MSDNドキュメントに記載されているようにcomdlg32.lib)。


CodeBlocksでは、次の方法でこれを行うことができます。

  1. [プロジェクト]メニューに移動し、 [ビルドオプション]をクリックします。
  2. [リンカー設定]タブをクリックします。
  3. [追加]をクリックします。
  4. comdlg32と入力し、[OK ]を押します。
  5. [OK]をクリックして変更を保存し、終了します。

これで、ビルド時にプロジェクトがそのライブラリにリンクされます。プロジェクトかどうかに関係なく、すべてのプログラムをそのライブラリにリンクする場合は、代わりに手順1を次の手順に置き換えることができます。

  1. [設定]メニューに移動し、 [コンパイラとデバッガ]をクリックします。

残りはそこから同じですが、グローバルベースです。


価値のあることとして、生のコマンドライン構築を使用している場合は-lcomdlg32、同じ効果を生成するオプションを追加できます。

于 2012-08-27T22:03:34.757 に答える
2

AllocConsoleGUIアプリ内にコンソールを作成するために使用します。

于 2012-08-27T20:07:52.267 に答える