首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >c++生成错误

c++生成错误
EN

Stack Overflow用户
提问于 2012-11-28 09:34:00
回答 2查看 1.8K关注 0票数 0

我正在尝试将wwise集成到一个测试项目中。我在windows 7上有一个使用2010的项目,这是我尝试在项目中添加一个额外的cpp后得到的错误。我在家里的机器上没有这个安装错误,这是什么意思?

代码语言:javascript
复制
------ Build started: Project: wwise test, Configuration: Debug Win32 ------
  AkFilePackageLUT.cpp
c:\program files (x86)\audiokinetic\wwise v2012.2.1 build 4427\sdk\samples\soundengine\common\akfilepackagelut.h(204): error C2065: 'NULL' : undeclared identifier
      c:\program files (x86)\audiokinetic\wwise v2012.2.1 build 4427\sdk\samples\soundengine\common\akfilepackagelut.cpp(117) : see reference to function template instantiation 'const CAkFilePackageLUT::AkFileEntry<T_FILEID> *CAkFilePackageLUT::LookupFile<AkFileID>(T_FILEID,const CAkFilePackageLUT::FileLUT<T_FILEID> *,bool)' being compiled
      with
      [
          T_FILEID=AkFileID
      ]
c:\program files (x86)\audiokinetic\wwise v2012.2.1 build 4427\sdk\samples\soundengine\common\akfilepackagelut.h(204): error C2065: 'NULL' : undeclared identifier
      c:\program files (x86)\audiokinetic\wwise v2012.2.1 build 4427\sdk\samples\soundengine\common\akfilepackagelut.cpp(140) : see reference to function template instantiation 'const CAkFilePackageLUT::AkFileEntry<T_FILEID> *CAkFilePackageLUT::LookupFile<AkUInt64>(T_FILEID,const CAkFilePackageLUT::FileLUT<T_FILEID> *,bool)' being compiled
      with
      [
          T_FILEID=AkUInt64
      ]
EN

回答 2

Stack Overflow用户

发布于 2012-11-28 09:40:18

在我看来,乍一看,它似乎没有指定模板参数。

其他可能的原因:

  • 您正在使用C运行时的调试版本进行编译,在for循环中声明标准C++库迭代器变量,然后尝试在for循环范围之外使用该迭代器变量。用C运行时的调试版本编译标准C++库代码意味着/Zc:forScope。有关更多信息,请参见Debug Iterator支持。
  • 您可能要在SDK头文件中调用当前构建环境中不支持的函数。
  • 省略必要的包含文件,特别是在定义VC_EXTRALEAN、WIN32_LEAN_AND_MEAN或WIN32_EXTRA_LEAN时。为了加快编译速度,这些符号从windows.h和afxv_w32.h中排除了一些头文件。(查看windows.h和afxv_w32.h,了解最新的排除内容描述。)
  • 标识符名拼写错误。
  • 标识符使用错误的大写字母和小写字母。
  • 在字符串常量后面缺少结尾引号。
  • 不正确的命名空间范围。例如,要解析ANSI C++标准库函数和操作符,必须使用using指令指定std命名空间。以下示例无法编译,因为using指令被注释掉,cout在std命名空间中定义。
票数 1
EN

Stack Overflow用户

发布于 2012-11-28 10:22:41

此错误消息如下所示:

<path...>\akfilepackagelut.h中有一个函数模板的定义。实际上,它是类的模板化方法。在该定义中,在第204行中,使用了名称NULLNULL是在C标准库的标头<cstddef>中定义的,通常可以通过包含大量C/C++标头中的一个来包含该定义,因为它们中的大多数都包含<cstddef>。但是,akfilepackagelut.h似乎只包含在您使用的VS2012安装中不包含该定义的标题,因此编译器不知道NULL意味着什么。

其余的错误消息只是模板错误的胡言乱语,告诉您我们正在讨论的函数模板在AkFilePackageLUT.cpp中已经被实例化了两次,告诉您确切的位置和模板参数等等。

你能做什么?如果你不能像你说的那样修改源(为什么?您有源代码)您不能做任何事情,但可能会为该项目提交一个bug。如果可以修改,最好在#include <cstddef>中使用akfilepackagelut.h

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13601882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档