1

私はVisual Studio 2010に取り組んでいるMFCの男で、Visual Studioを使用していくつかの実行可能ファイルを作成しています!! しかし、Linux と Mac では、実行可能ファイルが通常の Windows のように機能しません!!。そこで、「MinGW」コンパイラを使用して実行可能ファイルを作成することにしました。

注:-1 つ​​の提案をお願いします。

CドライブにWinGWコンパイラを正常にインストールし、次のプログラムで作業を開始しました..

#include <iostream>
using namespace std;
int main ()
{
  cout << "Hello ";
  return 0;
}

次のコマンドを使用してコンパイルします。

g++ -static-libgcc -static-libstdc++ Main.cpp

同じフォルダーにa.exeという名前の実行可能ファイルが1つ見つかりました:)正常に動作しています:)

しかし、しばらくして、同じプログラムを次のように変更することにしました。

int main ()
{
  return 0;
}

同じコマンドでコンパイルしますが、コマンドラインを使用して実行すると、「アクセスが拒否されたので、そのフォルダーに移動し、 「管理者として実行」として同じ実行可能ファイルを実行すると、メッセージウィンドウが指定されたにアクセスできないというメッセージボックスが1つ表示されますデバイス パスまたはファイル。適切な権限がない可能性があります

- -編集 -

次のコードは機能しません:-

 int main ()
 {
      int k;
      return 0;
  }

しかし、このプログラムは動作しています:-

int main()
{
  int k;
  k = 0;
  return 0;
}
4

4 に答える 4

2

このアクセス拒否エラーが発生した場合、最も可能性の高い原因は、実行可能ファイルが別のプロセス (おそらくリンカーまたはデバッガー) で開かれていることです。Process ExplorerをインストールCtrl+Fして、.exe の名前を入力してみてください。これにより、.exe ファイルが開くプロセスが表示されます。それらのプロセスを強制終了します (または、まだデバッグ中の場合は、最初にデバッグを終了します)。その後、再度ビルドできるはずです。

gcc を使用している場合と同様に、これは Microsoft API とは関係がないことに注意してください。

編集: .exe を保持しているプロセスがない場合は、他の種類のアクセス許可の問題がある可能性があります。.exe ファイルは存在しますか? ファイルを削除して再構築できますか? もう 1 つの試みは、Process Monitor を実行して .exe の名前をフィルター処理することです。これにより、通常のアクセス許可拒否エラー、または共有競合などの別のエラーが表示される場合があります。

于 2013-07-15T08:39:55.140 に答える
1

注:-1 つ​​の提案をお願いします。

いいえ、そこには他に何もありません。

ターゲット プラットフォームで利用可能なコンパイラを使用し、それらすべてでコードがコンパイルされるようにします。プラットフォーム固有およびコンパイラー固有のコードは絶対に避けてください (クロスプラットフォームのフレームワークを使用してください)。

WinGWを正常にインストールしました

mingw にはさまざまなサイトからさまざまなバージョンが提供されています。mingw-get を使用して mingw.org からコンパイラをインストールすると、おそらく動作します。他のサイトから mingw をインストールすると、動作する場合と動作しない場合があります。

次のコマンドを使用してコンパイルします。

ビルド システムを使用します。cmake、qmake など。

「アクセスが拒否されました」というエラーが表示されます

プロセス モニターを起動し、終了するシステム コールを確認します。また、ウイルス対策ソフトウェアがプログラムに干渉している可能性や、パスに浮遊 dll があるなどの可能性もあります。

于 2013-07-16T08:32:16.640 に答える
0

実行可能ファイルが存在するフォルダー全体のアクセス許可を確認してください。フォルダーがアクセス許可を許可していない場合、「管理者として実行」を試みても効果はありません。

于 2013-07-12T13:39:56.957 に答える
0

あなたのコードとは何の関係もありません。これは環境の問題です。ユーザー アカウントがハード ディスク上の 1 つまたは複数のディレクトリに対して持っているアクセス許可に関して、何かがかなり混乱しています。一般的な診断は、プログラムのデフォルトの作業ディレクトリが読み取りまたはリスト アクセスを許可していないことです。

可能な出発点は、エクスプローラーを使用して、MinGW がインストールされているディレクトリーを右クリックすることです。[セキュリティ] タブを使用して、ユーザー アカウントにすべての権限が有効になっていることを確認します。さらに、別のディレクトリをデフォルト ディレクトリとして使用して、コマンド プロンプトからプログラムを実行しようとすることに絞り込みます。

于 2013-07-16T08:22:24.717 に答える