header.h
声明的函数原型void InitializeTestData();
为什么NetBeans测试代码不能正确链接?
a.c
声明它void InitializeTestData() { ... }
b.c
称之为InitializeTestData();
与海合会链接器将报告b.c:108: undefined reference to '_InitializeTestData'
我必须忽视的东西很明显,但什么?
header.h
确实有一个包含保护(它的#define
仅在该文件中使用)。
有没有涉及其他预处理器指令......没有#if
缠绕原型或声明。
没有我必须发布整个项目,有人可以建议一些东西让我说d'oh!
?
更新:Netbeans处理它,并与其他数十个具有外部函数和数据的文件没有问题。
答:a.c
竟是一个NetBeans测试文件。 NetBeans处理这些与其他文件不同,因为它们每个都需要有一个amain()
。这意味着它们每个都有自己的Makefile,并且b.o
未与该文件中的a.o
链接。解决方案,将声明移动到不是Netbeans测试文件的文件c.c
。
你如何编译/链接你的程序? – codaddict
+1好问题。 Netbeans处理它,并且与其他十几个具有外部功能和数据的文件没有问题。 – Mawg
如果您创建了一个新的Netbeans项目,并且只复制并粘贴了您在该项目中显示的代码,那么您是否仍然遇到同样的错误? – zwol