
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 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>error LNK2019: 未解決の外部シンボル ・・・
ライブラリを指定してやらなければならないです。
google とかで "msdn BitBlt" のようにキーワードを指定して検索すると
MSDN のリファレンスのページが見つかると思うので、そこで一番下の方にあるインポートライブラリを指定しましょう。
cl aaa.c block.res kernel32.lib gdi32.lib ...
のようにしてやれば良いと思います。
# /link オプションを指定しなくても勝手に上手くやってくれるみたいですね。
No.2
- 回答日時:
CL コマンドではリソースのコンパイルはできないと思います。
( RC コマンドでリソースファイルのコンパイルが可能です。)
windres、または rc で block.res を出力して、
cl aaa.cpp /link aaa.obj block.res ...
のようにすれば exe ができるんじゃないかなぁ、と思います。
ライブラリの指定が足りなかったようです。
kernel32.libやUser32.libなどを指定したら、
無事にコンパイルできました。
ありがとうございました!
No.1
- 回答日時:
スタートメニューから「Microsoft Visual Studio 2010」→「Visual Studio Tools」→「V
io 2010 コマンド プロンプト」を選んでそこから「cl」を起動するとどうなりますか?この回答への補足
Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 16.00.30319.01 for 80x86
Copyright (C) Microsoft Corporation. All rights reserved.
使い方: cl [ オプション... ] ファイル名... [ /link リンク オプション... ]
とでます。
NO2の質問者の方のように、block.resファイルを生成し、
>cl tetoris0113.cpp block.res
とやったら、
/out:tetoris0113.exe
tetoris.obj
block.res
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__BitBlt@36 が関数 "v
oid __cdecl showBoard(void)" (?showBoard@@YAXXZ) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__GetAsyncKeyState@4
が関数 "bool __cdecl processInput(void)" (?processInput@@YA_NXZ) で参照されまし
た。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__InvalidateRect@12
が関数 "void __cdecl gameOver(void)" (?gameOver@@YAXXZ) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__KillTimer@8 が関数
"void __cdecl gameOver(void)" (?gameOver@@YAXXZ) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__DefWindowProcA@16
が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)"
(?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4
が関数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)"
(?WndProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__DeleteObject@4 が関
数 "long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?Wn
dProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__EndPaint@8 が関数 "
long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndPro
c@@YGJPAUHWND__@@IIJ@Z) で参照されました。
tetoris0113.obj : error LNK2019: 未解決の外部シンボル __imp__BeginPaint@8 が関数
"long __stdcall WndProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WndP
roc@@YGJPAUHWND__@@IIJ@Z) で参照されました。
このように、よくわからないエラーがたくさん出ます。
gccでの-mwindowsオプションのように
WINDOWSアプリケーション用のオプションが必要なのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL PostgreSQL14.6のSSL対応について 1 2023/01/05 15:42
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
- C言語・C++・C# Cのコンパイルでコメントアウトをそのままオブジェクトに保持したい 7 2023/08/01 22:22
- Windows 10 Visual StudioとVisual C++ Build Toolsについて 1 2023/04/16 03:42
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- その他(プログラミング・Web制作) Visual StudioでDjangoのプロジェクト配下のappを作成する方法 1 2022/05/01 03:47
- C言語・C++・C# LU分解法のピボッティングについて(C言語/gcc-9) 3 2022/07/11 23:10
- C言語・C++・C# ExcelCS 1 2023/01/27 19:47
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
ヘッダーファイル『windows.h』...
-
リトルエンディアン、ビッグエ...
-
signal関数について
-
gccコンパイル時のエラーメッセ...
-
CUnitをDOSベースで使うには...
-
ウィンドウズでobjective cを勉...
-
#ifdef の使い方
-
C言語で作ったらWindowsでもMac...
-
debian/gnu Linuxで並列計算し...
-
C++Builderの選択
-
Cのソースを毎回コンパイルし...
-
AdobeReader8.0の機能を使って...
-
共有ライブラリの内容確認について
-
Ubuntu上でITRONプログラムを作...
-
Visual Basic.NETの処理速度は6...
-
c言語でログイン処理はできます...
-
gccでc++プログラムをコンパイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
シリアル通信の受信待ちについて
-
ビープ音が鳴りません・・・
-
C#で char型とstring型の比較で...
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
64ビットのlinuxで32ビットメモ...
-
C言語で作ったらWindowsでもMac...
-
MS-BASICの逆コンパイルについて
-
<math.h>ヘッダを入力している...
-
ヘッダーファイル『windows.h』...
-
プレコンパイルの意味を教えて...
-
Verilog_HDLでのdefineとifdef
-
[COBOL] ソースの復帰
-
gcc バージョン違いによるコン...
-
同じEXE・同じファイルで解析結...
おすすめ情報