必要なすべての MFC ライブラリがあり、それらはすべて「atlmc」というディレクトリにあります。http://social.msdn.microsoft.com/Forums/en-US/vcmfcatl/thread/c8556098-6f41-42cb-9de6-38ed24c3faf9から単純な helloworldmfc.cpp をコピーして作成しました
コードは次のとおりです。
#include <afxwin.h>
class HelloApplication : public CWinApp
{
public:
virtual BOOL InitInstance();
};
HelloApplication HelloApp;
class HelloWindow : public CFrameWnd
{
CButton* m_pHelloButton;
public:
HelloWindow();
};
BOOL HelloApplication::InitInstance()
{
m_pMainWnd = new HelloWindow();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}
HelloWindow::HelloWindow()
{
Create(NULL,
"Hello World!",
WS_OVERLAPPEDWINDOW|WS_HSCROLL,
CRect(0,0,140,80));
m_pHelloButton = new CButton();
m_pHelloButton->Create("Hello World!",WS_CHILD|WS_VISIBLE,CRect(20,20,120,40),this,1);
}
リンカーが要求するすべてのライブラリファイルなどをリンクしました。それらはたくさんあります。これが私のビルドコマンドです:
C:\Users\Scruffy\Desktop\MSVC>Bin\cl.exe hellomfc.cpp /EHsc /I atlmfc\include /I includes /I includes\Winsdk atlmfc\lib\amd64\nafxcw.lib Libs\libcmt.lib Libs\ Kernel32.Lib Libs\User32.Lib Libs\Gdi32.Lib Libs\MSImg32.Lib Libs\ComDlg32.Lib Libs\WinSpool.Lib Libs\AdvAPI32.Lib Libs\Shell32.Lib Libs\ComCtl32.Lib Libs\ShLwApi .Lib Libs\Uuid.lib atlmfc\lib\amd64\atls.lib Libs\Ole32.Lib Libs\OleAut32.Lib Li bs\oldnames.lib Libs\WS2_32.Lib Libs\MsWSock.Lib Libs\OleAcc.Lib Libs\comsuppw.l ib Libs\GdiPlus.lib Libs\Imm32.Lib Libs\WinMM.Lib Libs\MsXml2.Lib Libs\OleDlg.Lib ib Libs\Urlmon.Lib
コンパイラの応答は、見つからないことについて不平を言って__tmainCRTStartup
います。_WIN32_WINNT が定義されていないことに関する他のことと同様に、それは単なる警告であり、エラーではないようです。
これは、ビルド コマンドを実行した後の cl.exe からの完全な応答です。
Microsoft (R) C/C++ 最適化コンパイラ バージョン 16.00.30319.01 for x64 Copyright (C) Microsoft Corporation. 全著作権所有。
hellomfc.cpp _WIN32_WINNT が定義されていません。デフォルトは _WIN32_WINNT_MAXVER (WinSDKVer.h を参照) Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. 全著作権所有。
/out:hellomfc.exe hellomfc.obj atlmfc\lib\amd64\nafxcw.lib Libs\libcmt.lib Libs\Kernel32.Lib Libs\User32.Lib Libs\Gdi32.Lib Libs\MSImg32.Lib Libs\ComDlg32.Lib Libs\ WinSpool.Lib Libs\AdvAPI32.Lib Libs\Shell32.Lib Libs\ComCtl32.Lib Libs\ShLwApi.Lib Libs\Uuid.lib atlmfc\lib\amd64\atls.lib Libs\Ole32.Lib Libs\OleAut32.Lib Libs\oldnames .lib Libs\WS2_32.Lib Libs\MsWSock.Lib Libs\OleAcc.Lib Libs\comsuppw.lib Libs\GdiPlus.lib Libs\Imm32.Lib Libs\WinMM.Lib Libs\MsXml2.Lib Libs\OleDlg.Lib Libs\Urlmon .Lib libcmt.lib(crt0.obj): エラー LNK2019: 関数 __tmainCRTStartup hellomfc.exe で参照されている未解決の外部シンボル main : 致命的なエラー LNK1120: 1 つの未解決の外部
だからerror LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup hellomfc.exe : fatal error LNK1120: 1 unresolved externals
問題があるようです。このエラーは基本的に、コンパイラがエントリ ポイントを見つけられないことを意味しますね。もしそうなら、MFC はフレームワークのどこかにその WinMain を埋め込んでいるようです。わかりました。どうすればリンクできますか?