こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

実行ファイルが作成環境以外のPCで実行が出来ません。
現在Windowsプログラミングでアプリケーションを作成しております。
しかし作成した実行ファイルを他のPCで実行しようとすると
[cygwin1.dllが見つからなかったため、このアプリケーションを開始できませんでした。アプリケーションをインストールしなおすとこの問題は解決される場合があります。]
とのエラーメッセージが表示され、実行することができません。

恐らくCygwin関係のエラーだとは思うのですが、Cygwinが入っていない環境でも使用できるようにすることは出来ませんでしょうか?

必要そうな情報を下に書いておきます

作成環境:Vista Cygwin
コンパイル:gcc -mwindows a.cpp a.o

実行環境:X Cygwin無し

投稿日時 - 2010-02-05 19:24:00

QNo.5651793

困ってます

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

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

投稿日時 - 2010-02-05 22:06:27

補足

御回答ありがとうございます。
慌てたので確認せずに質問してしまったようです。

実行環境がXPです・・・抜けてました。
コンパイルは gcc -mwindows acpp b.o です。
windres -i b.rc -o b.o で作成しました。

昔にどこかのサイトを見てコンパイルはずっとこれだったのですが、まずかったですか・・・
g++ -mwindows a.cpp b.o とすれば大丈夫でしょうか。
今まで正常に動作していたのですが、gccで何か問題が発生することがあるのでしょうか?

重ねて質問で申し訳ありません。

投稿日時 - 2010-02-05 23:12:10

お礼

お礼が4か月も経ってしまいました。
IDを忘れてしまったためにログインができませんでした、申し訳ありません。

あの後無事に実行することができました。
ご助力いただいた皆様、どうもありがとうございました。

投稿日時 - 2010-06-20 15:08:57

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

簡単には、cygwin1.dll をEXEファイルとともに配布すればOKです。

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

Unix独自機能を使っているならcygwin1.dllとの同時配布しかありません。

投稿日時 - 2010-02-06 14:47:27

ANo.2

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

投稿日時 - 2010-02-06 12:31:18

あなたにオススメの質問