dir1有dir2、file1.c和file1.h。
dir2 有 file2.c
现在,如果我想在 file2.c 中访问 file1.c 中定义的函数,我需要在 file1.h 中声明它并在 file2.c 中包含 file1.h ——这是一个有效的假设吗?
如果不是,请解释一下。
如果是,即使这样做之后我也会收到“未定义的函数引用”错误。
file2.c:29:对“函数”的未定义引用
Collect2: ld 返回 1 退出状态*错误代码1
编译 C 程序分为两个基本步骤:编译和链接。编译将源代码转换为目标代码,链接将目标代码放在一起,并将所有符号连接在一起。
你的问题是链接器问题,而不是编译器问题。
您可能正在运行以下命令:
gcc dir_2/file2.c
相反,请执行以下操作:
gcc -c dir_2/file2.c
gcc -c file1.c
gcc -o out file1.o file2.o
The reason发生这种情况并不是因为您没有在标头中声明该函数,或者没有正确包含标头。当链接器尝试将可执行文件中的所有符号放在一起时,它找不到您的函数,因为您只是链接half你的程序的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)