ただ、WinAPIのコンパイラを学ぶことは多くの問題に遭遇し、
LNK2019:未解決の外部シンボル_mainは、シンボルはMSVCRTD.LIBテストにおける機能___tmainCRTStartupで参照されます。
この質問を示しますが、主な機能(コンソールアプリケーション)の新しいタイプですが、ウィンドウはアプリケーションプログラムであることを、明確にWin32関数である解決策:プロジェクト-プロパティ-リンカ-システム-サブシステム-コンソールへWindows用。
次の基本的な注意事項:
一、问题描述
エラーLNK2001:未解決の外部シンボル_WinMain @ 16
デバッグ/ MAIN.EXE:致命的なエラーLNK 1120:1つの未解決の外部
エラー実行LINK.EXE。
プロデュース第二に、問題が発生することがあり
1、あなたはVCコンソールプログラムを構築し使用し、そのエントリの機能がメインであるべきであり、あなたはWinMain関数を使用します。
2.あなたは、VCを使用するには、WinMianではなく、メインのエントリ関数として使用されているファイルを、コンパイルした後、.C / .cppファイルを開きました。今回のVCのデフォルト設定はコンソールプログラムです。
第三に、ソリューション
プロジェクト- >設定- > C / C ++に移動します 、 カテゴリ内のプリプロセッサを選択し、プロセッサの定義では、削除_CONSOLE、追加_WINDOWS
2.へプロジェクト - >設定 - >リンク、プロジェクトのオプション/サブシステム内:コンソール変更/サブシステム:窓。
設定の保存3.、すべてを再構築します。
VS2005は、対応する項目のセットに設けられた参照
四、VS2005の設定
1. [メニュープロジェクト - >プロパティ、ポップアップウィンドウプロパティページ
2.左側の列で選択します。Configurationプロパティ - > C / C ++ - その後>プリプロセッサ、および対応する追加_WINDOWSの右欄にアイテムプリプロセッサの定義_CONSOLEを削除します。
左の列にある3.:設定プロパティ - >リンカー - >システム、およびWindowsに変更し、その後右側の列のサブシステムに対応する項目(/ SUBSYSTEM:WINDOWS)
4.Rebuildすべて。OK ?
:(テスト環境:VS2005、プログラミング言語VC)
次のようにテキストエディタでコードを書く1:
// test.cの 書式#include <windows.hに> int型APIENTRYのWinMain(HINSTANCE hInstanceは、 HINSTANCE hPrevInstance、 LPSTR lpCmdLine、int型nCmdShow) { のMessageBox(NULL、" こんにちは!"、" タイトル" 、MB_OK); }
パッケージはtest.c.を存在すると想定されます
2.ビルドVS2005でのWin32コンソールアプリケーションは、注意がアプリケーション設定空のプロジェクトに設定されている。test.cのは、それから行くためにプロジェクトに追加します。
3.vs2005確立エンジニアリングのデフォルトは、UNICODEサポートで、私はこれを持っているので、プロパティページウィンドウを起動し、メニューから[プロジェクト] - > [プロパティ]を選択しないでください。左側の列に選択します。Configurationプロパティ - >全般、文字セットの後、右側の欄には、使用マルチバイト文字セットに変更しました。
4.コンパイル、間違いがあります。
MSVCRTD.LIB(crtexe.obj):エラーLNK2019:参照未解決の外部シンボル_main に機能___tmainCRTStartup C:\テスト\デバッグ\ TEST.EXE:致命的なエラーLNK1120:1つの未解決の外部
5.方法VS2005の設定を設定する上でフォローして、コンパイルエラーは、現在行っています!
同様に、あなたは、新しいWindows 32のプログラムですが、エントリ関数コンソールプログラムを使用する場合:無効メインを(){}。図に対応するプログラムの種類に応じて変更することができます。