C 引用 C++ extern
C referencing C++ extern
我在 Windows 编译中有一个 header 文件,使用英特尔编译器进行编译。 header 看起来像这样:
#ifdef _MAIN
Loggerp logger;
#else
extern Loggerp logger;
#endif
_MAIN 宏在 C++ 文件中定义,并且有一个包含 header 的 C 文件。这会生成一个“...LNK2019:未解析的外部符号...”,因为 C++ 编译修饰(破坏)'logger' 名称,使得链接器无法将未修饰的 C 名称与修饰的 C++ 名称相匹配。
MSVC 文档声明 MS 编译器将同时支持 'extern "C"' 和 'extern "C++"'。但是,英特尔编译器将 'extern "' 的引号标记为错误。
有人知道如何让英特尔编译器标记此引用,以便它可以链接到 C++ 和 C 吗?
// when compiling C++ code, use the non-mangled C names
#ifdef __cplusplus
# define EXTERN extern "C"
#else
# define EXTERN extern
#endif
EXTERN Loggerp logger;
我在 Windows 编译中有一个 header 文件,使用英特尔编译器进行编译。 header 看起来像这样:
#ifdef _MAIN
Loggerp logger;
#else
extern Loggerp logger;
#endif
_MAIN 宏在 C++ 文件中定义,并且有一个包含 header 的 C 文件。这会生成一个“...LNK2019:未解析的外部符号...”,因为 C++ 编译修饰(破坏)'logger' 名称,使得链接器无法将未修饰的 C 名称与修饰的 C++ 名称相匹配。
MSVC 文档声明 MS 编译器将同时支持 'extern "C"' 和 'extern "C++"'。但是,英特尔编译器将 'extern "' 的引号标记为错误。
有人知道如何让英特尔编译器标记此引用,以便它可以链接到 C++ 和 C 吗?
// when compiling C++ code, use the non-mangled C names
#ifdef __cplusplus
# define EXTERN extern "C"
#else
# define EXTERN extern
#endif
EXTERN Loggerp logger;