unresolved external symbol—困扰我多年的问题
照着书上写了一段最简单的hello程序,在Visual C++ 6.0下,编译成功,连接时却出现如下错误:Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/Hello.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.Hello.exe - 3 error(s), 0 warning(s)n年了,都没有找到方法解决。不用生成向导,最简单的MFC程序该如何编写?能不能将所有代码均放在一个源文件,而不采用其它源文件和自定义的头文件?每每我这样做了,便会出现上述错误。救救我!
以下是hello程序的源码:#include <afxwin.h>class CHelloFrame:public CFrameWnd
{
public:
CHelloFrame()
{Create(NULL,"Hello World!",WS_OVERLAPPEDWINDOW,rectDefault);}
};class CHelloApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};BOOL CHelloApp::InitInstance()
{
m_pMainWnd=new CHelloFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}CHelloApp HelloApp;
照着书上写了一段最简单的hello程序,在Visual C++ 6.0下,编译成功,连接时却出现如下错误:Linking...
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
Debug/Hello.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.Hello.exe - 3 error(s), 0 warning(s)n年了,都没有找到方法解决。不用生成向导,最简单的MFC程序该如何编写?能不能将所有代码均放在一个源文件,而不采用其它源文件和自定义的头文件?每每我这样做了,便会出现上述错误。救救我!
以下是hello程序的源码:#include <afxwin.h>class CHelloFrame:public CFrameWnd
{
public:
CHelloFrame()
{Create(NULL,"Hello World!",WS_OVERLAPPEDWINDOW,rectDefault);}
};class CHelloApp:public CWinApp
{
public:
virtual BOOL InitInstance();
};BOOL CHelloApp::InitInstance()
{
m_pMainWnd=new CHelloFrame();
m_pMainWnd->ShowWindow(m_nCmdShow);
m_pMainWnd->UpdateWindow();
return TRUE;
}CHelloApp HelloApp;
VC默认的是/system:console
改成window~
修改编译选项:
C/C++/Category选Code Generation,Use run-time library选MultiThreaded或Debug MultiThreaded就OK了或直接改编译选项
如果有/ML就改成/MT
如果有/MLd 就改成/MTd
不同线程模式的连接库是不同的,可以参考MSDN中关于/MD, /ML, /MT, /LD 等编译选项的说明。
不同线程模式的函数库是不能同时使用的,因为这些库都定义了许多同名的函数。如果你的程序编译中出现了某些Ansi C系统函数重复定义或类似的错误,就可能跟线程模式有关了。我这也是经验之谈,出过这样的错误。
当时是W32程序加载mfc的类,
我的解决办法是:
project/setting
在Microsoft foundation classes中选中
Use Mfc in a static class希望对你有帮助!!