c++ - 是什么导致我的 "‘FatalError’ in namespace ‘Foam’ does not name a type”错误?

标签 c++

我有一个奇怪的错误,一段时间以来我都没有设法解决。我想通过与英特尔 OpenVINO 的推理引擎一起使用来扩展一个 C++ 软件包。因此,我必须动态链接一些库并将一些 header 包含到现有代码中。之前,它编译没有任何错误。然后我包含找到的第一个头文件 (#include "inference_engine.hpp"),但我收到此错误消息

In file included from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/VectorSpaceI.H:26:0,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/VectorSpace.H:230,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/Vector.H:44,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/vector.H:39,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/fieldTypes.H:35,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/primitiveFieldsFwd.H:36,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:44,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:316:13: error: ‘FatalError’ in namespace ‘Foam’ does not name a type
     ::Foam::FatalError((functionName), __FILE__, __LINE__)
             ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:358:5: note: in expansion of macro ‘FatalErrorIn’
     FatalErrorIn(functionName)                                                 \
     ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:24: note: in expansion of macro ‘notImplemented’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                        ^
/opt/intel_openvino/openvino/inference_engine/include/ie_common.h:210:7: note: in expansion of macro ‘NotImplemented’
 class NotImplemented : public std::logic_error
       ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/messageStream.H:225:27: error: expected unqualified-id before ‘__PRETTY_FUNCTION__’
     #define FUNCTION_NAME __PRETTY_FUNCTION__
                           ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:316:25: note: in definition of macro ‘FatalErrorIn’
     ::Foam::FatalError((functionName), __FILE__, __LINE__)
                         ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:24: note: in expansion of macro ‘notImplemented’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                        ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:39: note: in expansion of macro ‘FUNCTION_NAME’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                                       ^
/opt/intel_openvino/openvino/inference_engine/include/ie_common.h:210:7: note: in expansion of macro ‘NotImplemented’
 class NotImplemented : public std::logic_error
       ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/messageStream.H:225:27: error: expected ‘)’ before ‘__PRETTY_FUNCTION__’
     #define FUNCTION_NAME __PRETTY_FUNCTION__
                           ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:316:25: note: in definition of macro ‘FatalErrorIn’
     ::Foam::FatalError((functionName), __FILE__, __LINE__)
                         ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:24: note: in expansion of macro ‘notImplemented’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                        ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:39: note: in expansion of macro ‘FUNCTION_NAME’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                                       ^
/opt/intel_openvino/openvino/inference_engine/include/ie_common.h:210:7: note: in expansion of macro ‘NotImplemented’
 class NotImplemented : public std::logic_error
       ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/messageStream.H:225:27: error: expected ‘)’ before ‘__PRETTY_FUNCTION__’
     #define FUNCTION_NAME __PRETTY_FUNCTION__
                           ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:316:25: note: in definition of macro ‘FatalErrorIn’
     ::Foam::FatalError((functionName), __FILE__, __LINE__)
                         ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:24: note: in expansion of macro ‘notImplemented’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                        ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:39: note: in expansion of macro ‘FUNCTION_NAME’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                                       ^
/opt/intel_openvino/openvino/inference_engine/include/ie_common.h:210:7: note: in expansion of macro ‘NotImplemented’
 class NotImplemented : public std::logic_error
       ^
In file included from /opt/intel_openvino/openvino/inference_engine/include/ie_blob.h:20:0,
                 from /opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp:16,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:68,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/ie_common.h:210:22: error: expected unqualified-id before ‘:’ token
 class NotImplemented : public std::logic_error
                      ^
In file included from /opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp:16:0,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:68,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/ie_blob.h: In static member function ‘static size_t InferenceEngine::Blob::product(const SizeVector&)’:
/opt/intel_openvino/openvino/inference_engine/include/ie_blob.h:245:75: warning: use of old-style cast [-Wold-style-cast]
         return std::accumulate(std::begin(dims), std::end(dims), (size_t) 1, std::multiplies<size_t>());
                                                                           ^
In file included from /opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp:18:0,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:68,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/ie_error.hpp: At global scope:
/opt/intel_openvino/openvino/inference_engine/include/ie_error.hpp:16:7: warning: ‘class InferenceEngine::IErrorListener’ has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
 class IErrorListener {
       ^
In file included from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/VectorSpaceI.H:26:0,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/VectorSpace.H:230,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/Vector.H:44,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/vector.H:39,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/fieldTypes.H:35,
                 from /opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/primitiveFieldsFwd.H:36,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:44,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/details/ie_exception_conversion.hpp: In function ‘void InferenceEngine::details::extract_exception(InferenceEngine::StatusCode, char*)’:
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:359:47: error: ‘FatalError’ was not declared in this scope
         << "Not implemented" << ::Foam::abort(FatalError);
                                               ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:24: note: in expansion of macro ‘notImplemented’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                        ^
/opt/intel_openvino/openvino/inference_engine/include/details/ie_exception_conversion.hpp:60:36: note: in expansion of macro ‘NotImplemented’
         case NOT_IMPLEMENTED:throw NotImplemented(msg);
                                    ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:359:47: note: suggested alternative:
         << "Not implemented" << ::Foam::abort(FatalError);
                                               ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:367:24: note: in expansion of macro ‘notImplemented’
 #define NotImplemented notImplemented(FUNCTION_NAME)
                        ^
/opt/intel_openvino/openvino/inference_engine/include/details/ie_exception_conversion.hpp:60:36: note: in expansion of macro ‘NotImplemented’
         case NOT_IMPLEMENTED:throw NotImplemented(msg);
                                    ^
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:303:16: note:   ‘Foam::FatalError’
 extern error   FatalError;
                ^
In file included from /opt/intel_openvino/openvino/inference_engine/include/cpp/ie_plugin_cpp.hpp:16:0,
                 from /opt/intel_openvino/openvino/inference_engine/include/ie_plugin_dispatcher.hpp:14,
                 from /opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp:21,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:68,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/details/ie_exception_conversion.hpp:60:55: warning: statement has no effect [-Wunused-value]
         case NOT_IMPLEMENTED:throw NotImplemented(msg);
                                                       ^
In file included from /opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp:21:0,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:68,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/ie_plugin_dispatcher.hpp: At global scope:
/opt/intel_openvino/openvino/inference_engine/include/ie_plugin_dispatcher.hpp:20:7: warning: ‘class InferenceEngine::PluginDispatcher’ has virtual functions and accessible non-virtual destructor [-Wnon-virtual-dtor]
 class PluginDispatcher {
       ^
In file included from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:68:0,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp: In function ‘void InferenceEngine::TopResults(unsigned int, InferenceEngine::TBlob<T>&, std::vector<unsigned int>&)’:
/opt/intel_openvino/openvino/inference_engine/include/inference_engine.hpp:45:57: warning: use of old-style cast [-Wold-style-cast]
     n = static_cast<unsigned>(std::min<size_t>((size_t) n, input.size()));
                                                         ^
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C: In member function ‘virtual void Foam::combustionModels::FPVANNModel::correctTabulatedANNTransport()’:
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:371:17: warning: unused variable ‘celli_count’ [-Wunused-variable]
             int celli_count = 0;
                 ^
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:404:17: warning: unused variable ‘patch_count’ [-Wunused-variable]
             int patch_count = 0;
                 ^
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:301:16: warning: unused variable ‘Zeta’ [-Wunused-variable]
         double Zeta;
                ^
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C: In member function ‘virtual void Foam::combustionModels::FPVANNModel::correctCalculatedANNTransport()’:
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:605:26: warning: unused variable ‘success’ [-Wunused-variable]
                     bool success = inf->doInference(frozenGraphName,inputOperationName,outputOperationName,no_of_inputs,no_of_outputs,input_dimensions,output_dimensions,cellsAndPatches,input_f_zeta_PVNorm,output_real,limit_intra,limit_inter,xlaJit);
                          ^
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:696:17: warning: unused variable ‘celli_count’ [-Wunused-variable]
             int celli_count = 0;
                 ^
tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:721:17: warning: unused variable ‘patch_count’ [-Wunused-variable]
             int patch_count = 0;
                 ^
In file included from tabulatedCombustionModel/FPVANNModel/FPVANNModel.H:66:0,
                 from tabulatedCombustionModel/FPVANNModel/FPVANNModel.C:31:
/home/elias/OpenFOAM/elias-4.1/LRT10Foam/src/../ThirdParty/ANNInference/TensorflowCAPI/inferenceC.H: At global scope:
/home/elias/OpenFOAM/elias-4.1/LRT10Foam/src/../ThirdParty/ANNInference/TensorflowCAPI/inferenceC.H:25:19: warning: ‘TF_Buffer* ReadBufferFromFile(const char*)’ defined but not used [-Wunused-function]
 static TF_Buffer* ReadBufferFromFile(const char* file)
                   ^
/home/elias/OpenFOAM/elias-4.1/LRT10Foam/src/../ThirdParty/ANNInference/TensorflowCAPI/inferenceC.H:55:13: warning: ‘void DeallocateTensor(void*, std::size_t, void*)’ defined but not used [-Wunused-function]
 static void DeallocateTensor(void* data, std::size_t, void*) // vorher void* arg
             ^
make: *** [Make/linux64GccDPInt64Opt/tabulatedCombustionModel/FPVANNModel/FPVANNModel.o] Error 1

除了包含额外的标题外,我没有做任何更改,而且错误消息非常奇怪。一位同事提到,所涉及的两个程序(OpenFOAM 和 OpenVINO)之间可能存在一些“冲突”。有人可以提示我可能是什么问题吗?

谢谢!

编辑:也许我应该指出这两个部分:

/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:316:13: error: ‘FatalError’ in namespace ‘Foam’ does not name a type
     ::Foam::FatalError((functionName), __FILE__, __LINE__)
/opt/intel_openvino/openvino/inference_engine/include/details/ie_exception_conversion.hpp: In function ‘void InferenceEngine::details::extract_exception(InferenceEngine::StatusCode, char*)’:
/opt/OpenFOAM/OpenFOAM-4.1/src/OpenFOAM/lnInclude/error.H:359:47: error: ‘FatalError’ was not declared in this scope
         << "Not implemented" << ::Foam::abort(FatalError);

最佳答案

原因隐藏在错误转储的一半附近:

#define NotImplemented notImplemented(FUNCTION_NAME)

OpenFOAM 将其用作宏以在未实现的方法中引发错误,而 OpenVINO 恰好定义了一个具有相同名称的类。 C++ 命名空间仅在宏扩展后解析,因此这对您没有帮助。

您的选项,按偏好大致排序:

  1. 首先包括 OpenVINO header ,然后是 OpenFOAM header 。这确实意味着如果您还想抛出或捕获这些异常,则必须 #undef NotImplemented
  2. 首先包含 OpenFOAM header ,然后是 #undef NotImplemented,然后包含 OpenVINO header 。这意味着您不能将 OpenFOAM 宏用于您自己的目的(尽管您可能不需要)。
  3. 如果没有其他标题使用它,请从 OpenFOAM 标题中删除宏。

关于c++ - 是什么导致我的 "‘FatalError’ in namespace ‘Foam’ does not name a type”错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005993/

相关文章:

c++ - 在for循环中计算复利

c++ - 返回类指针 C++

c++ - VI中的开放声明功能

c++ - pocketsphinx 简单示例在基本 C 测试中有效,但在包含在 C++ 项目中时无效

c++ - C++中的友元函数

c++ - 具有相同名称但参数类型不同的多个函数作为模板参数

c++ - 使用字符串和整数对对 vector 进行排序

c++ - 什么时候提供用户定义的复制构造函数和赋值运算符?

c++ - 现代 C++ 中的类型删除分配器

c++ - 怎么让这些成员元素能装进3个字节?