【发布时间】:2015-11-13 03:22:43
【问题描述】:
基本上,我使用g++ -c -o one.o one.c 分别编译几个C 文件,然后尝试将它们与g++ -o one.exe one.o two.o three.o 链接。链接器抱怨对 one.c 调用并在 two.c 中声明的函数的未定义引用。但是如果我这样做objdump -d two.o,函数就在那里,所以我很困惑为什么链接器找不到它们?
e:如果我给链接器选项-y <symbol>,它会打印定义符号的目标文件。
【问题讨论】:
-
是 C 还是 C++。另外,显示一些示例代码。也许您的函数声明与您对函数的定义不同。
-
C 和 C++ 的混合,这有关系吗?我会尝试发布一些代码,但声明肯定与定义匹配。
-
是的,实际上。例如,name mangling 中的 C 和 C++ 之间的差异可能会给您带来这种痛苦。所以,是的,有点重要。
-
Ughhhhh 就是 @user4581301 - 必须在子目录的 Makefile 中将 gcc 更改为 g++。就是这样。将在几秒钟内发布带有小示例的答案。
-
很高兴这是一个快速的。