为什么我会收到此错误? "unresolved external symbol"
Why am I getting this error ? "unresolved external symbol"
这是我一直在得到的错误,我一直在试图找出如何修复它,但失败了。我在问是否有人能给我指个正确的方向。
WorldServer fatal error LNK1120: 2 unresolved externals
WorldServer error LNK2019: unresolved external symbol "public: class CItemElem * __thiscall CLinkedItemMgr::GetLinkedItem(unsigned long)" (?GetLinkedItem@CLinkedItemMgr@@QAEPAVCItemElem@@K@Z) referenced in function "private: void __thiscall CDPSrvr::OnLinkedItem(class CAr &,unsigned long,unsigned long,unsigned char *,unsigned long)" (?OnLinkedItem@CDPSrvr@@AAEXAAVCAr@@KKPAEK@Z)
WorldServer error LNK2019: unresolved external symbol "public: int __thiscall CLinkedItemMgr::AddLinkedItem(class CItemElem *)" (?AddLinkedItem@CLinkedItemMgr@@QAEHPAVCItemElem@@@Z) referenced in function "private: void __thiscall CDPSrvr::OnLinkedItem(class CAr &,unsigned long,unsigned long,unsigned char *,unsigned long)" (?OnLinkedItem@CDPSrvr@@AAEXAAVCAr@@KKPAEK@Z)
这是。h
#ifndef __ITEM_LINK__H
#define __ITEM_LINK__H
class CLinkedItemMgr
{
private:
CLinkedItemMgr(){ m_dwLinkedItemCount = 0;};
~CLinkedItemMgr(){};
DWORD m_dwLinkedItemCount;
public:
map<DWORD,CItemElem*> m_mapLinkedItems;
static CLinkedItemMgr *GetInstance()
{
static CLinkedItemMgr instance;
return &instance;
}
int AddLinkedItem(CItemElem *pItem);
CItemElem *GetLinkedItem(DWORD dwIndex);
};
#endif
这是。cpp
#include "stdafx.h"
#include "ItemLink.h"
int CLinkedItemMgr::AddLinkedItem(CItemElem *pItem)
{
if(!pItem)
return 0;
m_mapLinkedItems.insert(make_pair<DWORD,CItemElem*>(++m_dwLinkedItemCount,pItem));
return m_dwLinkedItemCount;
}
CItemElem *CLinkedItemMgr::GetLinkedItem(DWORD dwIndex)
{
map<DWORD,CItemElem*>::iterator it = m_mapLinkedItems.find(dwIndex);
if(it == m_mapLinkedItems.end())
return FALSE;
return it->second;
}
您的问题在这里的cpp。
#ifdef __ITEM_LINK
#include "ItemLink.h"
#ifdef __ITEM_LINK
表示"只有定义了__ITEM_LINK
才处理下面的代码"
在您的示例中,它是未定义的。它只有在包含"ItemLink.h"
时才被定义,而"ItemLink.h"
只有在已经定义时才被定义。你已经阻止了这两种情况的发生。
删除#ifdef
行
这看起来像是一个链接问题。编译器知道您的类有一个名为GetLinkedItem
的函数,但在任何地方都找不到该函数的任何定义。在编译可执行文件时是否正确链接?我打赌在链接之前停止编译器不会触发任何错误。(例如g++ -c ItemLink.cpp).
我要找一个习惯visual studio的人帮忙详细说明一下:D无论如何,编译需要三个主要步骤:1)应用预处理器指令,解析源代码,查找语法错误等2)从源代码创建一个目标文件(介于源代码和可执行文件之间)3)将组成项目的所有目标文件链接到一个可执行文件
你的编译链在第三步失败。编译器期望在某些.cpp中定义某个函数(在编译链的第2步已成为目标文件),但在任何地方都找不到它。
并且它找不到它,因为.cpp文件中的#ifdef,它告诉预处理器不包含您的定义,因为__ITEM_LINK没有定义
顺便说一下,你把问题中的。cpp改了
相关文章:
- CppSQLite 抛出"LNK2019: unresolved external symbol"错误
- Visual Studio中的wxwidgets应用程序给出错误"LNK2019 unresolved external symbol"
- 我的游戏引擎的 spdlog 日志记录出现奇怪的"unresolved external symbol"错误
- 如何修复"unresolved external symbol _gladLoadGLLoader referenced in function _main"和"unresolved external
- 尝试使用 CPP 构建类时"unresolved external..."
- 通过覆盖虚拟函数来获取'unresolved external symbol'
- 运行时动态加载库时出错"unresolved external symbol"
- 为什么 VS C++链接器返回具有混合 DLL 转发的"LNK2001: unresolved external symbol"?
- Visual Studio 2017 中的 MySQL 连接器/C++ 错误"Unresolved external symbol _get_driver_instance"
- CMake 和 Visual Studio 出现"unresolved external symbol"错误
- DLL 注入编译 "unresolved external symbol" Visual Studio C++
- "Error LNK2001: unresolved external symbol _main"仍然存在
- QT 单元测试 moc "unresolved external symbol" for QMetaObject
- "error LNK2019: unresolved external fatal"和"error LNK1120: 1 unresolved externals"
- 主外部功能的C++ "unresolved external symbol"
- 错误 : "error LNK2019: unresolved external symbol"
- 为什么我的代码生成"Unresolved external symbol"错误?
- 使用三角形库时的"unresolved external symbol _triangulate"
- 如何修复" Error LNK2019 : unresolved external symbol ... "
- 问题:"error LNK2019: unresolved external symbol"