実行ファイルが作成環境以外のPCで実行できない問題

このQ&Aのポイント
  • Windowsプログラミングで作成した実行ファイルが他のPCで実行できない問題が発生しています。エラーメッセージにはcygwin1.dllが見つからないと表示されています。Cygwinが入っていない環境でも実行できる方法はあるのでしょうか?
  • 実行ファイルが作成環境以外のPCで実行できない問題が発生しています。エラーメッセージにはcygwin1.dllが見つからないため、アプリケーションを開始できないと表示されています。Cygwinが入っていない環境でも実行できるようにする方法はありますか?
  • Windowsプログラミングで作成した実行ファイルが他のPCで実行できない問題が発生しています。Cygwinがインストールされていない環境でエラーメッセージが表示されます。Cygwinがなくても実行できるようにする方法はありますか?
回答を見る
  • ベストアンサー

実行ファイルが作成環境以外のPCで実行が出来ません。

実行ファイルが作成環境以外のPCで実行が出来ません。 現在Windowsプログラミングでアプリケーションを作成しております。 しかし作成した実行ファイルを他のPCで実行しようとすると [cygwin1.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールしなおすとこの問題は解決される場合があります。] とのエラーメッセージが表示され、実行することができません。 恐らくCygwin関係のエラーだとは思うのですが、Cygwinが入っていない環境でも使用できるようにすることは出来ませんでしょうか? 必要そうな情報を下に書いておきます 作成環境:Vista Cygwin コンパイル:gcc -mwindows a.cpp a.o 実行環境:X Cygwin無し

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

Windowに皮を被してunix系のプログラムをほぼそのまま動かそうというのがcygwinです。cygwin1.dllはその皮です。 ですので、cygwin1.dllなしには動きません。 -mno-cygwinオプションでcygwin1.dllに依存しない実行ファイルができますが、たしか、最新のgccでは削られていたと思います。 (先日やろうとして、MinGWを使え、ってメッセージが出ました。その後の確認はしていません) 簡単なものではcygwin1.dllと一緒にコピーするだけで動きますが、複雑なものになると、他のDLLや/usr/share以下のファイルを参照するなどで、cygwin 環境そのものが必要になります。 Cygwinに依存しない実行ファイルを作るなら、他のコンパイラを使うのがいいです。 あと気になるのが >コンパイル:gcc -mwindows a.cpp a.o c++コンパイラはg++ですが? a.cppをコンパイルしたオブジェクトがa.oですが、それとa.oをリンクするって何? >実行環境:X Cygwin無し Cygwin無しで動くXサーバーが入っているんですか?

smily_k_c
質問者

お礼

お礼が4か月も経ってしまいました。 IDを忘れてしまったためにログインができませんでした、申し訳ありません。 あの後無事に実行することができました。 ご助力いただいた皆様、どうもありがとうございました。

smily_k_c
質問者

補足

御回答ありがとうございます。 慌てたので確認せずに質問してしまったようです。 実行環境がXPです・・・抜けてました。 コンパイルは gcc -mwindows acpp b.o です。 windres -i b.rc -o b.o で作成しました。 昔にどこかのサイトを見てコンパイルはずっとこれだったのですが、まずかったですか・・・ g++ -mwindows a.cpp b.o とすれば大丈夫でしょうか。 今まで正常に動作していたのですが、gccで何か問題が発生することがあるのでしょうか? 重ねて質問で申し訳ありません。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4846/10257)
回答No.3

簡単には、cygwin1.dll をEXEファイルとともに配布すればOKです。 cygwinはWindows上でUnix互換環境を提供するものですが、作ったプログラムが、「WindowsのAPIにないUnix独自機能」を使っていないのであれば、他のコンパイラを使えば EXE ファイルだけの配布が出来るようになります。候補としては、他の人が挙げている Mingw か Visual Studio Express。 Unix独自機能を使っているならcygwin1.dllとの同時配布しかありません。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

gccは拡張子に応じて勝手に適切なコンパイラ(もちろんインストールされてるのが前提)に処理を投げてくれるので特に間違ってはいませんよ。 どんなプログラムかが謎なのでなんとも言い難いですが、Visual C++2008 Express Editionでコンパイルするとか#1でも出ているにMinGWを使うとかするのがいいんじゃないでしょうか。

関連するQ&A

  • CygwinからVisual C++へ

    Cygwinでコンパイルしていたプログラムを、 Visual C++の cl コマンドでコンパイルしたいです。 あるプログラムを書きまして、Cygwinをインストールし、 [block.rc] BLOCKS BITMAP "block.bmp" という内容のリソースファイルを作成して、 windres block.rc -o block.o gcc -mwindows aaa.cpp block.o でちゃんとコンパイルできていました。 上記のように Visual Studio 2010 のVisual C++でコンパイルするにはどうしたらいいのかわかりません。 cl aaa.cpp block.o とやっても cl -mwindows aaa.cpp block.o とやっても、コンパイルできませんでした。 -mwindowsに代わるclコマンドのオプションを探してはみてみたものの、 -GA windowsアプリケーション用の最適化を行う というものを見つけたのでやってみましたがだめでした。 どなたか、コンパイルのアドバイスを下さい。

  • a.outはどこへ?

    WindowsでCのプログラミングを始めたばかりです。 環境はcygwinを使っているのですが、gccでコンパイルしてもa.outファイルが出来ません。 gccのコマンドの後には特にエラーも出ませんし、一見成功しているように見えるのですが、やっぱりa.outが出来ていません。 なぜなのでしょうか?

  • MinGW-gccでの実行ファイル作成法

    今まで、visual studio 2008を使用して、実行ファイルを作っていたのですが、 今回、gccで実行ファイルを作らなければいけなくなりました。 どなたかどういったコマンドオプションを用いれば実行ファイル作成までたどりつくのか 知っている方がいれば教えていただきたいです。 ちなみに、現在 >g++ -o p -O3 -lm ./src/p.cpp ./src/m.cpp -L ./ -lica とコマンドを打っていますが : undefined reference to `_imp___Z13icaPdiiS_b'  とリンクが上手くいっていない感じのエラーが返ってきます。 このエラーの改善方法についてもぜひどなたかご教授ください。 お願いします。

  • Linuxで実行ファイルを実行

    Linux上でC言語をコンパイルし、作成された実行形式ファイルを実行しようとしたのですが、実行できません。 作業フォルダは /var/www/html です。 gcc program.c でコンパイル、 作成されたa.out(ls でフォルダ内にあるのは確認済です) を以下の方法で実行しようとしましたが、全てできませんでした。 1. [root@host-210-161-57-177 html]# a.out bash: a.out: command not found 2. [root@host-210-161-57-177 html]# ./a.out opendir: No such file or directory 3. [root@host-210-161-57-177 html]# %./a.out bash: fg: %./a.out: no such job 4. [root@host-210-161-57-177 html]# % ./a.out bash: fg: %: no such job gcc -o program program.c でファイル名を指定してコンパイルしてみても同様の結果でした。 ご存じの方、どうかご回答をよろしくおねがいします。

  • cygwinの実行

    cygwinについての質問なんですが、gcc でコンパイルまではできたんですが、a.exe で実行ができません。 「bash: a.exe: command not found 」と出てしまいます。どうすればよいのでしょうか。

  • Windowsコモンコントロールのcygwin/gccコンパイルエラー

    以下のサイトのようなWindowsコモンコントロールのプログラムをcygwin/gccコンパイルするとエラーがでます。 (sourceのサイト) http://wisdom.sakura.ne.jp/system/winapi/common/common16.html (ビルドコマンド) gcc -mwindows -mno-cygwin -o main.exe main.cpp (エラー出力) undefined reference to `_ImageList_Destroy@4' undefined reference to `_InitCommonControls@0' undefined reference to `_ImageList_Create@20' undefined reference to `_ImageList_ReplaceIcon@12' undefined reference to `_ImageList_ReplaceIcon@12' collect2: ld returned 1 exit status make: *** [main.exe] Error 1 Windowsコモンコントロールを含んだプログラムをcygwin/gccコンパイルするにはどうすればよいでしょうか? コンパイルは出来ないのでしょうか? よろしくお願いします。

  • Foderaでプログラムを実行する方法

    C言語の勉強のためにFodera Core 6を入れて Windowsとデュアルブート環境にしたのですが gccでコンパイルしたファイルを実行できません。 どうしたら実行できるのか教えてください。 プログラミングにはあんまり詳しくなくて 初歩的な質問ですみません。

  • VC++(VS)でコンソールアプリ(複数ファイルからなる)を作成したい

    マイクロソフト社のVC++(Visual Studio 2008)で コンソールアプリケーションを作成しようとしております。 ファイルは複数ファイルからなり、 mainprogram.cpp -> 実行ファイル(mainprogram.exe) subprogram1.cpp -> オブジェクトファイル(subprogram1.obj) subprogram2.cpp -> オブジェクトファイル(subprogram2.obj) ・・・以下続く のように 1)サブプログラムをobjファイルとしてコンパイル 2)メインプログラムをコンパイルしてobjファイルとリンクし、   実行ファイルを作成する というような作業を行いたいと考えております。 以前はLinuxの環境でg++、makeを利用して このような構成のコンソールアプリケーションを作成しておりました。 が、VCに移行するに当り、どのようにプロジェクトファイル等を 構成して良いか分からず、出だしでつまづいております。 VCにもコマンドラインでコンパイルする方法 (cl, nmakeを使うんでしょうか。。。)があるみたいですが、 これらの手法について書かれている 書籍、サイト等を探すことが出来ないでおります。 VCに関して、このような使用法に対する解説がなされている書籍、 もしくはサイト等をお教え願えませんでしょうか? 宜しくお願い申し上げます。

  • 実行ファイル(.exe)が別のPCで実行できない

    お世話になります。 VC++で、MFCアプリケーションプロジェクトより ダイアログベースでアプリを作成したのですが、 その実行ファイル.exeを別のWindowsPCで 実行すると、 ”「MFC71.DLL」が見つからなかったため、このアプリケーションは開始できませんでした。アプリケーションをインストールしなおすことの問題は解決される場合があります。” というエラーメッセージが出て実行できません。 どのようにすれば、実行できるのでしょうか? また、Releaseモードでビルドした場合、 Debugモードでビルドしたときには、出なかった 「error LINK2019:未解決の外部シンボル・・・。」という エラーがでます。 どうぞよろしくお願い致します。

  • .oと.outファイルの違い

    gccでコンパイルするとa.outというものができます。 (-oで何も設定しなければ) これはC++のソースファイル1つをコンパイルした時に できる.oのファイルと同一のものでしょうか? #.oは.outの略? .oのファイルの中でmain関数を持っているものが、実行可能形式に なれるのでしょうか?

専門家に質問してみよう