error LNK2001: unresolved external symbol 链接错误解决办法

原创 2013年11月17日 13:17:44

     出现这个错误网上也有很多现象,比如工程建立的不对,一些库的导出问题,或者某某函数没有实现等等,网上也有很多有效的解决办法。

     我也遇到了这个问题:程序是一个多线程程序,Debug版本没有问题,Release(多线程Use run-time library要用Multithreaded)静态库编译出现以下链接问题。

Linking...
MainFrm.obj : error LNK2001: unresolved external symbol "protected: long __thiscall CMainFrame::OnMessage(unsigned int,long)" (?OnMessage@CMainFrame@@IAEJIJ@Z)
MainFrm.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMainFrame::WriteLog(class CString)" (?WriteLog@CMainFrame@@QAEXVCString@@@Z)
MainFrm.obj : error LNK2001: unresolved external symbol "public: static unsigned int __cdecl CMainFrame::WatchThread(void *)" (?WatchThread@CMainFrame@@SAIPAX@Z)
MainFrm.obj : error LNK2001: unresolved external symbol "public: void __thiscall CMainFrame::AutoStart(void)" (?AutoStart@CMainFrame@@QAEXXZ)
Release/INMSWatch.exe : fatal error LNK1120: 4 unresolved externals
Error executing link.exe.

发现也不是网上常见的那几种错误啊。

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

UINT CMainFrame::WatchThread(LPVOID pParam)
{
	
}

LRESULT  CMainFrame::OnMessage(WPARAM wparam,LPARAM lparam)
{
	     
}

void CMainFrame::ExitINMSMProcess()
{
	
}

///开机自启动
void CMainFrame::AutoStart()
{
	
}
 
void CMainFrame::WriteLog(CString strLogInfo)
{

}

#endif //_DEBUG
原来自己添加的函数写的地方不对。

如下:

BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs)
{
	if( !CFrameWnd::PreCreateWindow(cs) )
		return FALSE;
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	if(cs.hMenu!=NULL)                 //去除菜单栏
    {
         ::DestroyMenu(cs.hMenu);      // delete menu if loaded
         cs.hMenu = NULL;              // no menu for this window
    }

	cs.dwExStyle &= ~WS_EX_CLIENTEDGE;
	cs.lpszClass = AfxRegisterWndClass(0);
	return TRUE;
}

/////////////////////////////////////////////////////////////////////////////
// CMainFrame diagnostics

#ifdef _DEBUG
void CMainFrame::AssertValid() const
{
	CFrameWnd::AssertValid();
}

void CMainFrame::Dump(CDumpContext& dc) const
{
	CFrameWnd::Dump(dc);
}

#endif //_DEBUG

UINT CMainFrame::WatchThread(LPVOID pParam)
{
	
}

LRESULT  CMainFrame::OnMessage(WPARAM wparam,LPARAM lparam)
{
	
}
 
void CMainFrame::WriteLog(CString strLogInfo)
{
	
}
其中WatchThread为线程函数,OnMessage为自定义消息,WriteLog为自己添加的函数,放到了#endif里面就出现了这几个链接错误,所以最好用vc提供的添加函数工具来写,不容易出现错误。


error LNK2001: unresolved external symbol __imp__inet_ntoa@4问题解决

开发环境:VC 6.0 出现错误描述
  • cuiran
  • cuiran
  • 2014年11月12日 21:22
  • 15778

error LNK2001: unresolved external symbol _main解决办法

解决外部符号错误:_main,_WinMain@16,__beginthreadex [+缅? 在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译...
  • jiangxinyu
  • jiangxinyu
  • 2007年09月12日 16:53
  • 24983

unresolved external symbol "public: static struct 错误的原因及解决方法

在编译过程中,出现如下的错误unresolved external symbol "public: static structunsigned int CXXX::getXXX(CheckTimePW...
  • gengxt2003
  • gengxt2003
  • 2008年11月28日 17:54
  • 2743

浅析error LNK2001: unresolved external symbol "public: __thiscall

学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时, 编译都已通过。产生连接错误的原因非常多,尤其LNK2001错...
  • brk1985
  • brk1985
  • 2015年04月29日 20:38
  • 1673

浅析error LNK2001: unresolved external symbol "public: __thisc...

学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于     编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,     编译都已通过。产生连接错误的原因非常多,尤...
  • u013454746
  • u013454746
  • 2014年06月01日 14:49
  • 1903

.obj : error LNK2001: unresolved external symbol解决方法

error LNK 就是说错误出现在连接阶段。C++程序的具体编译链接步骤:假如写一个hello,world程序,要用cout这个库例程,但是自己并没有写这个cout。所以编译器编译成汇编代码以后会在...
  • hxb20082008
  • hxb20082008
  • 2010年02月26日 10:52
  • 1888

error LNK2001: unresolved external symbol "int __cdecl"等解决方法

遇到error LNK2001: unresolved external symbol "int __cdecl”,找了很久才找到满意的答案。其实直接google就能找到最贴切的解释。 在一个工程中...
  • zhoujunlintianxia
  • zhoujunlintianxia
  • 2015年02月07日 15:03
  • 3660

Pro*C "error LNK2001: unresolved external symbol "void __cdecl sqlcxt" 解决方法

在做数据库的大作业,VC+Pro*C的小程序, 写出来的.pc文件使用Pro*C预编译为.cpp文件后,进行链接时出错: ....obj: error LNK2001: unresolved ex...
  • rznice
  • rznice
  • 2011年01月01日 14:03
  • 8880

解决error LNK2001: unresolved external symbol _CrtDbgReportW

工程在release64为下设置Runtime Libraty 为Multi-threaded DLL (/MD)可以编译通过,在debug64下同样的设置报如下错误: 1>CNxMediaFile...
  • feng1028zd
  • feng1028zd
  • 2014年12月04日 09:20
  • 4515

解决 错误:error LNK2001: unresolved external symbol _auxDIBImageLoadA@4

关于 OpenGL 的一个错误 :error LNK2001: unresolved external symbol _auxDIBImageLoadA@4           个人环境 :V...
  • makenothing
  • makenothing
  • 2012年12月25日 22:06
  • 4547
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:error LNK2001: unresolved external symbol 链接错误解决办法
举报原因:
原因补充:

(最多只允许输入30个字)