gpt4 book ai didi

c++ - 我可以从命令行构建 MFC 应用程序吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:30:36 30 4
gpt4 key购买 nike

我有所有必要的 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 Lib s\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.L ib Libs\Urlmon.Lib

编译器响应提示未找到 __tmainCRTStartup。以及关于 _WIN32_WINNT 未定义的其他一些事情,尽管这似乎只是一个警告,而不是错误。

这是我通过 cl.exe 运行构建命令后的完整响应:

Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64 Copyright (C) Microsoft Corporation. All rights reserved.

hellomfc.cpp _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) Microsoft (R) Incremental Linker Version 10.00.30319.01 Copyright (C) Microsoft Corporation. All rights reserved.

/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) : error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup hellomfc.exe : fatal error LNK1120: 1 unresolved externals

所以 error LNK2019: unresolved external symbol main referenced in function __tmainCRTStartup hellomfc.exe : fatal error LNK1120: 1 unresolved externals似乎是问题所在。这个错误基本上意味着编译器找不到入口点,不是吗?如果是这样,MFC 显然将其 WinMain 埋在了框架的某个地方。好的好的,我如何链接到它?

最佳答案

看来您可能没有指定正确的目标平台(Windows 与控制台)并且后者未被链接。

尝试在命令行中指定/SUBSYSTEM:WINDOWS 以告知链接器要使用哪个启动过程。它是一个链接器标志,因此需要通过/link 传递到链接阶段。

关于c++ - 我可以从命令行构建 MFC 应用程序吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12831030/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com