Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;在Visual Studio 2013中-<;类别>;是未定义的_C++_Visual C++_Header Files - Fatal编程技术网

C++ C++;在Visual Studio 2013中-<;类别>;是未定义的

C++ C++;在Visual Studio 2013中-<;类别>;是未定义的,c++,visual-c++,header-files,C++,Visual C++,Header Files,我对C++/VS非常陌生,可能在项目的代码/配置中遗漏了一些东西。 在我的解决方案中,我有两个项目: 首先是NTL,我从中下载并编译到一个静态库NTL.lib 一个“测试”项目,其中:(1)我通过在properties->C++->Additional Include文件中指定头文件的目录来添加头文件,(2)在properties->Linker->Input->Additional Dependencies中添加了“NTL.lib”(3)将NTL.lib文件复制到与“测试”项目的主cpp文件

我对C++/VS非常陌生,可能在项目的代码/配置中遗漏了一些东西。 在我的解决方案中,我有两个项目:

  • 首先是NTL,我从中下载并编译到一个静态库NTL.lib
  • 一个“测试”项目,其中:(1)我通过在properties->C++->Additional Include文件中指定头文件的目录来添加头文件,(2)在properties->Linker->Input->Additional Dependencies中添加了“NTL.lib”(3)将NTL.lib文件复制到与“测试”项目的主cpp文件相同的目录中
我的cpp仅包含:

#include <NTL/GF2X.h>
int main() {
    GF2X P;
    return 1;
}
#包括
int main(){
gf2xp;
返回1;
}
构建将提供以下输出:

1>------ Build started: Project: test, Configuration: Release Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(388,5): warning MSB8028: The intermediate directory (Release\) contains files shared from another project (ntl-test.vcxproj).  This can lead to incorrect clean and rebuild behavior.
1>  QuickTest.cpp
1>..\tests\QuickTest.cpp(43): warning C4101: 'n' : unreferenced local variable
1>D:\studies\Thesis\NTL-Ben-Key\Include\NTL/vector.h(79): warning C4291: 'void *operator new(size_t,_ntl_vector_placement)' : no matching operator delete found; memory will not be freed if initialization throws an exception
1>          D:\studies\Thesis\NTL-Ben-Key\Include\NTL/vector.h(36) : see declaration of 'operator new'
1>          D:\studies\Thesis\NTL-Ben-Key\Include\NTL/vector.h(319) : see reference to function template instantiation 'void NTL::BlockConstruct<T>(T *,long)' being compiled
1>          with
1>          [
1>              T=NTL::zz_p
1>          ]
1>          D:\studies\Thesis\NTL-Ben-Key\Include\NTL/vector.h(291) : while compiling class template member function 'void NTL::Vec<NTL::zz_p>::DoSetLength(long)'
1>          D:\studies\Thesis\NTL-Ben-Key\Include\NTL/vector.h(115) : see reference to function template instantiation 'void NTL::Vec<NTL::zz_p>::DoSetLength(long)' being compiled
1>          D:\studies\Thesis\NTL-Ben-Key\Include\NTL/vec_lzz_p.h(14) : see reference to class template instantiation 'NTL::Vec<NTL::zz_p>' being compiled
1>  MyTest.cpp
1>MyTest.cpp(4): error C2065: 'GF2X' : undeclared identifier
1>MyTest.cpp(4): error C2146: syntax error : missing ';' before identifier 'P'
1>MyTest.cpp(4): error C2065: 'P' : undeclared identifier
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
1>----构建已启动:项目:测试,配置:发布Win32------
1> C:\Program Files(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppBuild.targets(388,5):警告MSB8028:中间目录(版本\)包含从另一个项目(ntl test.vcxproj)共享的文件。这可能导致不正确的清理和重建行为。
1> QuickTest.cpp
1> ..\tests\QuickTest.cpp(43):警告C4101:'n':未引用的局部变量
1> D:\studies\Thesis\NTL Ben Key\Include\NTL/vector.h(79):警告C4291:“void*运算符新建(大小、矢量位置)”:未找到匹配的运算符删除;如果初始化引发异常,则不会释放内存
1> D:\studies\Thesis\NTL Ben Key\Include\NTL/vector.h(36):参见“新操作员”声明
1> D:\studies\Thesis\NTL Ben Key\Include\NTL/vector.h(319):请参阅正在编译的函数模板实例化“void NTL::BlockConstruct(T*,long)”的参考
1> 与
1>          [
1> T=NTL::zz\u p
1>          ]
1> D:\studies\Thesis\NTL Ben Key\Include\NTL/vector.h(291):编译类模板成员函数“void NTL::Vec::DoSetLength(long)”时
1> D:\studies\Thesis\NTL Ben Key\Include\NTL/vector.h(115):请参阅正在编译的函数模板实例化“void NTL::Vec::DoSetLength(long)”的参考
1> D:\studies\Thesis\NTL Ben Key\Include\NTL/vec_lzz_p.h(14):请参阅正在编译的类模板实例化“NTL::vec”的参考
1> MyTest.cpp
1> MyTest.cpp(4):错误C2065:'GF2X':未声明的标识符
1> cpp(4):错误C2146:语法错误:缺少“;”在标识符“P”之前
1> cpp(4):错误C2065:“P”:未声明的标识符
======生成:0成功,1失败,0最新,0跳过==========

这真的是一件简单的事情,我没有弄清楚我遗漏了什么。

来自NTL/include/NTL/tools.h:

#define NTL_NAMESPACE NTL
#define NTL_OPEN_NNS namespace NTL_NAMESPACE {
#define NTL_CLOSE_NNS  }
因此,当预处理器遇到
NTL\u OPEN\u NNS
时,就像include文件GF2X.h中的情况一样,它将其扩展到
名称空间NTL
,这意味着GF2X类在名称空间NTL中声明。为了使用它,您需要将其完全限定为
NTL::GF2X
,或者使用
使用名称空间NTL
来讨论哪一种外观。
同样,在GF2X.h的末尾,在从NTL/include/NTL/tools.h扩展NTL\u CLOSE\u NNS后,有一个结束括号:

#define NTL_NAMESPACE NTL
#define NTL_OPEN_NNS namespace NTL_NAMESPACE {
#define NTL_CLOSE_NNS  }
因此,当预处理器遇到
NTL\u OPEN\u NNS
时,就像include文件GF2X.h中的情况一样,它将其扩展到
名称空间NTL
,这意味着GF2X类在名称空间NTL中声明。为了使用它,您需要将其完全限定为
NTL::GF2X
,或者使用
使用名称空间NTL
来讨论哪一种外观。
同样,在GF2X.h的末尾,在从NTL/include/NTL/tools.h扩展NTL\u CLOSE\u NNS后,有一个结束括号:

#define NTL_NAMESPACE NTL
#define NTL_OPEN_NNS namespace NTL_NAMESPACE {
#define NTL_CLOSE_NNS  }
因此,当预处理器遇到
NTL\u OPEN\u NNS
时,就像include文件GF2X.h中的情况一样,它将其扩展到
名称空间NTL
,这意味着GF2X类在名称空间NTL中声明。为了使用它,您需要将其完全限定为
NTL::GF2X
,或者使用
使用名称空间NTL
来讨论哪一种外观。
同样,在GF2X.h的末尾,在从NTL/include/NTL/tools.h扩展NTL\u CLOSE\u NNS后,有一个结束括号:

#define NTL_NAMESPACE NTL
#define NTL_OPEN_NNS namespace NTL_NAMESPACE {
#define NTL_CLOSE_NNS  }
因此,当预处理器遇到
NTL\u OPEN\u NNS
时,就像include文件GF2X.h中的情况一样,它将其扩展到
名称空间NTL
,这意味着GF2X类在名称空间NTL中声明。为了使用它,您需要将其完全限定为
NTL::GF2X
,或者使用
使用名称空间NTL
来讨论哪一种外观。
同样地,在GF2X.h的末尾,在展开NTL_CLOSE_NNS后有一个结束括号

,该标题以
NTL_OPEN_NNS
开头,这是一个可能展开为
名称空间NTL的宏{
左右。因此,您需要使用NTL::GF2X;除此之外,可能还需要提交错误报告,以警告缺少运算符删除。如果编译器诊断正确,可能会导致内存泄漏或更糟。该头以
NTL\u OPEN\u NNS
开头,这是一个可能扩展到
命名空间NTL的宏{
左右。因此,您需要使用NTL::GF2X;除此之外,可能还需要提交错误报告,以警告缺少运算符删除。如果编译器诊断正确,可能会导致内存泄漏或更糟。该头以
NTL\u OPEN\u NNS
开头,这是一个可能扩展到
命名空间NTL的宏{
左右。因此,您需要使用NTL::GF2X;除此之外,可能还需要提交错误报告,以警告缺少运算符删除。如果编译器诊断正确,可能会导致内存泄漏或更糟。该头以
NTL\u OPEN\u NNS
开头,这是一个可能扩展到
命名空间NTL的宏{
左右。因此,您需要使用NTL::GF2X;除此之外,可能还需要提交错误报告,以警告缺少运算符delete。如果编译器诊断正确,可能会导致内存泄漏或更糟。