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

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

     我也遇到了这个问题:程序是一个多线程程序,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提供的添加函数工具来写,不容易出现错误。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值