我有所有必要的 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\ Ke rnel32.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.l ib 库\GdiPlus.lib 库\Imm32.Lib 库\WinMM.Lib 库\MsXml2.Lib 库\OleDlg.L ib 库\Urlmon.Lib
编译器的回应抱怨__tmainCRTStartup
找不到。以及关于 _WIN32_WINNT 未定义的其他一些事情,尽管这似乎只是一个警告,而不是一个错误。
这是我通过它运行构建命令后来自 cl.exe 的完整响应:
Microsoft (R) C/C++ 优化编译器版本 16.00.30319.01 for x64 版权所有 (C) Microsoft Corporation。版权所有。
hellomfc.cpp _WIN32_WINNT 未定义。默认为 _WIN32_WINNT_MAXVER(参见 WinSDKVer.h) Microsoft (R) 增量链接器版本 10.00.30319.01 版权所有 (C) Microsoft Corporation。版权所有。
/out:hellomfc.exe hellomfc.obj atlmfc\lib\amd64\nafxcw.lib 库\libcmt.lib 库\Kernel32.Lib 库\User32.Lib 库\Gdi32.Lib 库\MSImg32.Lib 库\ComDlg32.Lib 库\ WinSpool.Lib 库\AdvAPI32.Lib 库\Shell32.Lib 库\ComCtl32.Lib 库\ShLwApi.Lib 库\Uuid.lib atlmfc\lib\amd64\atls.lib 库\Ole32.Lib 库\OleAut32.Lib 库\oldnames .lib 库\WS2_32.Lib 库\MsWSock.Lib 库\OleAcc.Lib 库\comsuppw.lib 库\GdiPlus.lib 库\Imm32.Lib 库\WinMM.Lib 库\MsXml2.Lib 库\OleDlg.Lib 库\Urlmon .Lib libcmt.lib(crt0.obj):错误 LNK2019:未解析的外部符号 main 在函数 __tmainCRTStartup hellomfc.exe 中引用:致命错误 LNK1120:1 个未解析的外部符号
所以error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup hellomfc.exe : fatal error LNK1120: 1 unresolved externals
似乎是问题所在。这个错误基本上意味着编译器找不到入口点,不是吗?如果是这样,MFC 显然将其 WinMain 隐藏在框架中的某个位置。好的好的,我如何链接到它?