gpt4 book ai didi

c - 链接库时未定义对全局数组的引用

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:47 24 4
gpt4 key购买 nike

我有一个主文件,我正在使用共享库 libhtml 构建,libhtml 是使用另一个共享库 libctpe 构建的。当我同时构建 libctpelibhtml 时,我没有收到任何错误/警告,但是当将主文件与 libhtml 链接时,我收到以下错误,我得到以下警告:

/home/krajput/parser/back_up/15_5/parser/ctpe/libctpe.so: undefined reference 状态信息表

现在,Libctpe 包含文件 ctpe.c,其中“state_info_table”是全局声明的结构指针数组,然后使用函数 create_state_table() 定义.

State_t **state_info_table;

void create_state_table() {
int i;
State_t **state_info_table = malloc(state_table_size *sizeof(State_t*));
if(!state_info_table) {
printf("\nMemroy Allcoation failed\n");
}
for ( i=0;i<state_table_size;i++) {
state_info_table[i] = malloc(1*sizeof(State_t*));
state_info_table[i] = NULL;
}
return;
}

除此文件外,我没有在任何地方使用此数组。此外,当我尝试执行“nm libctpe.s”时,它会将 state_info_table 显示为 U( undefined symbol ) .我不知道问题是什么。

最佳答案

您确定要将全局 state_info_table 变量伪装成 create_state_table 中的本地变量吗?

也许应该是:*state_info_table = (State_t *)malloc(state_table_size *sizeof(State_t*));

关于c - 链接库时未定义对全局数组的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16564596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com