【发布时间】:2018-12-19 18:32:44
【问题描述】:
我正在尝试声明一个可通过不同 *.c 文件访问的全局函数。
我已在 param.hxx 中声明,在 param.cxx 中定义,我想在 compute_grid.c 中访问它。
不幸的是,在编译过程中出现以下错误:
compute_grid.c:(.text+0x5) : undefined reference to « grid_create »
我对 C 中的此类函数声明不是很熟悉。实际上我正在构建一个大程序的模块部分,我已经从另一个代码文件中复制了这些声明,这似乎可以工作?!
不幸的是,该程序非常机密,我无法访问所有来源,但我会尽力为您提供已删除的部分...
参数.hxx:
typedef struct grid_t
{
int *test;
} grid_t;
void
grid_create(void);
extern grid_t *grid;
参数.cxx:
#include <malloc.h>
#include "param.hxx"
grid_t *grid;
void grid_create(void)
{
grid = (grid_t*)malloc(sizeof(grid_t));
grid->test = (int*)malloc(sizeof(int));
*grid->test = 123;
}
compute_grid.c:
#include "param.hxx"
void
compute_grid()
{
grid_create();
return;
}
感谢您的帮助!
【问题讨论】:
-
你用什么命令编译?
-
您需要编译这两个源并将它们链接在一起。也许这可以通过在编译器命令行上同时命名(.c 和 .cxx)来实现。
-
问题,但是:您希望编译器为文件
param.cxx假定什么语言?如果是 C,那么它的名字应该以.c结尾,而不是.cxx。 -
这部分代码是用g++编译的。
-
@JohnBollinger,不幸的是我无法修改编译器调用,这对我来说是无法访问的。但是,我不认为这是一个编译器链接问题(我肯定错了):我尝试了这里描述的解决方案(stackoverflow.com/questions/8562694/…)并且它有效,但是一旦我调整它以遵循我的其余代码,不,不再是:')
标签: c function gcc header undefined