【发布时间】:2016-03-28 03:47:16
【问题描述】:
感谢您查看问题。有一个名为 try.m 的目标 c 文件,我使用以下命令将其编译为目标文件 try.o:
gcc -c try.m -o try.o -framework Foundation
try.h 是
int print_word( void );
try.m 是:
#include "try.h"
#import <Foundation/Foundation.h>
int print_word( void )
{
NSLog (@"say hello");
return 0;
}
另外还有一个main.c文件,里面包含main()函数,看起来:
#include <stdio.h>
#include "try.h"
int main()
{
printf( "This is main\n");
}
我通过以下命令将 main.c 编译为 main.o:
gcc -o main.o -c main.c
然后,我将main.o和try.o链接起来形成可执行文件main:
gcc -o main main.o try.o
在这些步骤之后,发生了以下错误: enter image description here
错误是:
Undefined symbols for architecture x86_64:
"_NSLog", referenced from:
_print_word in try.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
如何解决这些错误?
【问题讨论】:
标签: objective-c macos gcc