这些链接器错误的含义是什么?

时间:2012-09-09 19:46:36

标签: c++ visual-studio linker static-libraries

我希望我能问“我需要链接哪些库”,但它非常具体(wwise引擎集成),所以我需要自己帮忙解决。当我尝试创建头文件中定义的类型的变量时(编译器发现标头没有问题),会出现问题。我得到22个链接器错误,但我不明白读出,有人可以引导我通过它并告诉我确切缺少哪个符号所以我可以弄清楚我缺少哪些库?它可以是除了链接之外的其他东西吗? Wwise附带了一个演示项目,它可以编译但不会链接到任何更多的库。

以下是5个错误。我正在使用visual studio。

1>main.obj : error LNK2019: unresolved external symbol "public: enum AKRESULT __thiscall CAkDefaultIOHookBlocking::Init(struct AkDeviceSettings const &,bool)" (?Init@CAkDefaultIOHookBlocking@@QAE?AW4AKRESULT@@ABUAkDeviceSettings@@_N@Z) referenced in function "bool __cdecl InitSoundEngine(void)" (?InitSoundEngine@@YA_NXZ)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CAkDefaultIOHookBlocking::GetDeviceDesc(struct AkDeviceDesc &)" (?GetDeviceDesc@CAkDefaultIOHookBlocking@@UAEXAAUAkDeviceDesc@@@Z)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual unsigned long __thiscall CAkDefaultIOHookBlocking::GetDeviceData(void)" (?GetDeviceData@CAkDefaultIOHookBlocking@@UAEKXZ)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual enum AKRESULT __thiscall CAkDefaultIOHookBlocking::Read(struct AkFileDesc &,struct AkIoHeuristics const &,void *,struct AkIOTransferInfo &)" (?Read@CAkDefaultIOHookBlocking@@UAE?AW4AKRESULT@@AAUAkFileDesc@@ABUAkIoHeuristics@@PAXAAUAkIOTransferInfo@@@Z)
1>main.obj : error LNK2001: unresolved external symbol "public: virtual enum AKRESULT __thiscall CAkDefaultIOHookBlocking::Write(struct AkFileDesc &,struct AkIoHeuristics const &,void *,struct AkIOTransferInfo &)" (?Write@CAkDefaultIOHookBlocking@@UAE?AW4AKRESULT@@AAUAkFileDesc@@ABUAkIoHeuristics@@PAXAAUAkIOTransferInfo@@@Z)

2 个答案:

答案 0 :(得分:2)

您的文件AkDefaultIOHookBlocking.cpp尚未添加到您正在构建的项目中。

答案 1 :(得分:2)

符号为:

enum AKRESULT CAkDefaultIOHookBlocking::Init(struct AkDeviceSettings const &,bool)
virtual void CAkDefaultIOHookBlocking::GetDeviceDesc(struct AkDeviceDesc &)
virtual unsigned long CAkDefaultIOHookBlocking::GetDeviceData(void)
virtual enum AKRESULT CAkDefaultIOHookBlocking::Read(struct AkFileDesc &,struct AkIoHeuristics const &,void *,struct AkIOTransferInfo &)
virtual enum AKRESULT CAkDefaultIOHookBlocking::Write(struct AkFileDesc &,struct AkIoHeuristics const &,void *,struct AkIOTransferInfo &)

据我所知,你只有声明类CAkDefaultIOHookBlocking的标题,这意味着你试图使用你需要链接到库的任何上述符号。

  

Wwise带有一个演示项目,它可以编译但不会链接到任何更多的库。

不使用符号,或者在该项目中编译定义这些符号的源文件 - http://gmwwise.googlecode.com/svn-history/r2/trunk/GMWwise/wwise/AkDefaultIOHookBlocking.cpp