• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数1031
  • ありがとう数4

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

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

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サーバーが入っているんですか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

質問者からの補足

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

関連する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アプリケーション用の最適化を行う というものを見つけたのでやってみましたがだめでした。 どなたか、コンパイルのアドバイスを下さい。

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

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

  • C++のソースをコンパイルしてできた実行ファイル

    のトラブルです。ちなみにプログラミングはかなりの初心者です。 サンプルソース等をコンパイルして実行ファイルを作成しても、実行ウィンドウが固まってしまいます。 どのプログラムでコンパイルしても同じです。二台のPCのVisual C++でやってみましたが(VistaデスクトップとXPノート)、どちらでもビルドが正常終了した後実行ファイルを確認するとファイル名の表示されたウィンドウが真っ白のまま固まってます。borlandのC++Builderで作成した実行ファイルも実行ウィンドウが同じ状態になりました。CD-ROM添付のサンプル実行ファイルだけはしっかり表示されました。 猫でもわかるゲームプログラミングで勉強しようとしています。 どなたか分かる方ご回答お願いしますm(_ _)m

その他の回答 (2)

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

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

共感・感謝の気持ちを伝えよう!

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

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 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'  とリンクが上手くいっていない感じのエラーが返ってきます。 このエラーの改善方法についてもぜひどなたかご教授ください。 お願いします。

  • 64bitの実行ファイルを実行する場合

    開発機(64bit)でCのソースをコンパイル・実行ファイル作成をし、本番機(64bit)に実行ファイルだけFTP転送します。 そして本番機には64bitのCのコンパイラ(cc)は入ってなく、32bitのものが入っています。 そういう環境のせいか、signal 11を出してプログラムは停止します。 #開発機では正常稼動しています Cの実行ファイルが実行されるときはコンパイラが影響するものなのでしょうか? #影響するようでしたら上記エラーが出るのも納得できるのですが。。 申しわけありませんが、何かアドバイスがありましたらよろしくお願いします。

  • 実行ファイルの動作について

    VB6.0を用いて簡単なアプリケーションを作成しています。 内容は、Inetコントロールを用いてFTPサーバとクライアント間でのファイル転送を行うものです。 プログラムを作成し実行してみたところ、 プロジェクト上では動作しますが、 実行ファイルを作成し、そこで実行させると途中でなぜかハングしてしまいます。 しかし、ファイルの転送には成功しているようです。 転送後のエラー処理に不具合があるのかとも思いますが、 プロジェクト上では問題ありません。 何度もコンパイルし直し、その都度実行ファイルも 作成しなおしています。 なぜでしょうか?? どなたかアドバイスいただけないでしょうか?

  • cygwinの実行

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

  • 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 でファイル名を指定してコンパイルしてみても同様の結果でした。 ご存じの方、どうかご回答をよろしくおねがいします。

  • VisualStudio.NETの実行ファイルはどれ?

    今VisualSdudio.NETでプログラムを書いています。 実行ファイルはDebugフォルダの.exeファイルだと思ったのでダブルクリックしたのですが何もおきません・・・。 プログラムを実行するときはプログラムはひとつ上のフォルダの"DxLib.h"をインクルードしていてcppファイルもこのフォルダにあります。 VisuialSdudio.NETの「デバッグ」→「開始」を選択すると 処理画面が表示され、きちんと実行されます。 コンパイルはVisualStudio.NETで行って、実行はVisualStudio.NETを使わずにやりたいのです。 ファイルアイコンダブルクリックから起動するにはどうしたらいいのでしょうか? どなたかお詳しいかた教えてください><

  • VS2008 の C++ で作成したEXEの実行

    Visual Studio 2008 の C++(C++ではなくC)で作成した実行ファイルを、Visual Studio 2008 がインストールされていないが別のPC(WinXP)で実行すると、 「このアプリケーションの構成が正しくないため、アプリケーションを開始できませんでした。アプリケーションを再度インストールすることにより問題が解決する場合があります。」 のエラーが出るだけで実行できません。 同様な内容のQ&Aも見ましたが、解決できないので質問します。 なお、参考になるかわかりませんが、 ・Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ  vcredist_x86.exe はインストールしてあります。 ・同じVisualStudio2008のC#で作成した実行ファイルは、正常に動きます。 ・別のPC(Win2000)では、 msvcr90d.dll を C:\WINNT\system32 フォルダに入れると、正常に動きます。 よろしくお願いいたします。

  • cygwinでpalmkit(http://palmkit.sourc

    cygwinでpalmkit(http://palmkit.sourceforge.net/)のソースコードのコンパイルをしています。 README.jpに従い cd src ./configure make make install とcygwinで入力しました。 できたexeファイルを実行すると「cygwin1.dllが見つからなかったため、このアプリケーションを開始できませんでした。」と表示されて実行できません。 cygwinのインストールフォルダからexeファイルのあるフォルダにcygwin1.dllをコピーすれば実行できるのですが、cygwin1.dllなしでも実行できるようにすることはできないのでしょうか。 回答お願いします。

  • a.outはどこへ?

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

  • ubuntuで作ったアプリを他のLinuxで動作

    Ubuntu Linuxなどでgccのコンパイラを使用して作成したアプリケーションの実行ファイルを他のLinuxでも実行させることなどは可能でしょうか? いまBeagleBone BlackというAngstrom Linuxというのが実装されている基板でのアプリケーションを作成しているのですが、 自分のPCにUbuntu Linuxがインストールされていたので、こちらでHello worldのプログラムを作ってgccコンパイルしてできた実行ファイルをBeagleBone Blackに移して、コマンドラインで ./hello_a.out これで実行してみたのですが、 ./hello_a.out:cannot execute binary file このようなエラーがでて実行することができません。 どなたかご教授頂きますよう、お願い致します。