c - C、Xcode 中的链接器错误。链接目标文件 (.o) 失败。不知道如何在 Xcode 中包含 makefile

标签 c xcode macos makefile linker-errors

我已经创建了 Xcode 项目并添加了我想要使用的 C 文件和 header 。但是,我不知道如何链接目标文件,这就是我收到链接器错误的原因。

tree of my files and linking error

Speller.c 有 main 方法。现在我尝试从头文件 dict.h 链接 dict-tree.o 和peller.o 。

我可以使用我编写的 makefile 从终端执行此操作,但我需要适当的调试,这就是决定使用 Xcode 的原因。

有没有办法在 Xcode 上包含 makefile,并通过该 makefile 编译程序?

Makefile内容:

  CFLAGS=-g -Wall -std=c99
  CC=gcc

  # "make tree" or "make hash" to compile

  tree: speller.o dict-tree.o
       $(CC) $(LDFLAGS) -o $@ $^

  hash: speller.o dict-hash.o
       $(CC) $(LDFLAGS) -o $@ $^

最佳答案

遇到同样的问题后,找到这个问题,然后进一步研究,我发现您需要在 C++ 文件中声明基于 C 的函数,如下所示:

extern "C" void function_from_c_file(int var, int var);

这必须取代与 C 文件关联的头文件中的标准函数声明。

基本上,您需要一个单独的头文件在 C++ 文件中使用,或者根据需要将它们手动编码到 C++ 文件中。

我在这两个链接中找到了帮助:

https://discussions.apple.com/thread/2197357?tstart=0 (前往“etresoft”的帖子)

https://isocpp.org/wiki/faq/mixing-c-and-cpp#call-c

祝你好运!

关于c - C、Xcode 中的链接器错误。链接目标文件 (.o) 失败。不知道如何在 Xcode 中包含 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28334096/

相关文章:

ruby - 我很困惑,在 OS X 上安装 Ruby 1.9.2 最简单的方法是什么?

c - 由 main() 修改并由 ISR() 访问的全局变量

无法在 C 中的 Linux 中设置串口配置

ios - 如何从 AppStore 中删除对 iPad 的支持

macos - Rsync bash 脚本和硬链接(hard link)文件

macos - OSX 上的 AF_PACKET

python - C 和 Python 三元运算符之间的区别

c++ - 位移位和赋值

ios - Objective-c Json 解析空数组错误或 Bug?

swift - XIB View 的自动布局约束