无法使用C ++代码链接C全局变量

时间:2019-05-15 16:49:54

标签: c++ c global

我正在研究一个利用C源代码调用也链接到C ++库的C ++函数的项目。我已经能够允许我的C代码调用C ++函数,但是我也希望我的C ++函数能够访问C源代码中定义的全局变量。链接C / C ++代码.o文件时,当前出现错误。错误消息会通过每个使用这些全局变量的.o文件,并显示“未定义的引用..”。

这不是确切的代码或其他内容,但基本上是我尝试执行的示例的非常简单的示例。 constants.h文件也将被其他C代码使用。

constants.h

#ifdef __cplusplus
extern "C" {
#endif

extern const int x;

#ifdef __cplusplus
}
#end if

constants.c

int x = 5;

mycppcode.cpp

#include "constants.h"

void print_x(int x){

    printf("%d", x);

};

1 个答案:

答案 0 :(得分:0)

您需要在定义了该值的位置链接.o文件。编译时,编译器不会担心该值。但是在链接时,编译器试图在所有.o和链接库中查找值。如果找不到,则会出现该错误。