
以下のサイトのようなWindowsコモンコントロールのプログラムをcygwin/gccコンパイルするとエラーがでます。
(sourceのサイト)
http://wisdom.sakura.ne.jp/system/winapi/common/ …
(ビルドコマンド)
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コンパイルするにはどうすればよいでしょうか?
コンパイルは出来ないのでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
コンパイルは成功。
リンク処理(ld)でエラー発生していますね。
Windowsコモンコントロールを含んだプログラムをコンパイルするには
【Windowsコモンコントロール】の【ライブラリ】をプログラムにリンクさせる必要があります。
# MicrosoftのVisualCを使った場合でも、同様のリンク処理が必要です。
gccでライブラリを指定するオプションは -l(ライブラリ名)。
【Windowsコモンコントロール】の【ライブラリ名】は 【comctl32】 なので、 -lcomctl32 オプションを(ビルドコマンド)末尾に追加する必要があります。
さらに 【comctl32】 が 【gdi32】ライブラリ に依存するので、実際のビルドコマンドは以下のようになります。
gcc -mwindows -mno-cygwin -o main.exe main.cpp -lcomctl32 -lgdi32
最後に
「undefined reference to XXXXXX」エラーは、ライブラリのリンク漏れです。今回のように必要なライブラリとライブラリの依存関係を調査し、-lオプションで必要なライブラリ名を指定することで解決できます。
調査方法は、参考URLのように XXXXXX 部分を検索するのが簡単な方法です。(参考URLでは、`_ImageList_Destroy@4'から`ImageList_Destroy`部分を検索キーとして利用しています。)
参考URL:http://www.google.co.jp/search?q=ImageList%5fDes …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
ビープ音が鳴りません・・・
-
[COBOL] ソースの復帰
-
プログラムのexe化
-
cygwinのgccで正常にコンパイル...
-
#If VBA7 Thenに関して
-
マイコンの制御レジスタへのア...
-
Visual Basic.NETの処理速度は6...
-
math.hに含まれる関数が使えない
-
define文のパラメータを実行時...
-
コンパイル時に「out of memory...
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
cygwin1.dll を必要としないCの...
-
gccを使ってのリンク時のライブ...
-
obj オブジェクトファイルがで...
-
libsshのコンパイルエラー
-
vba コンパイル
-
python エラー
-
エクセルのエラーメッセージ「4...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
ビープ音が鳴りません・・・
-
C#で char型とstring型の比較で...
-
[COBOL] ソースの復帰
-
ヘッダーファイル『windows.h』...
-
シリアル通信の受信待ちについて
-
自作DLLの中身を暗号化
-
64ビットのlinuxで32ビットメモ...
-
gcc バージョン違いによるコン...
-
Cのコンパイルでコメントアウト...
-
プレコンパイルの意味を教えて...
-
gccでc++プログラムをコンパイ...
-
VS2010環境で2点ほど質問
-
VBで作成したOCXでバージョンが...
おすすめ情報