0
問題を確認していただきありがとうございます。そこtry.mと呼ばれるオブジェクトcファイルがある、と私は、コマンドでオブジェクトファイルtry.oにそれをcomplie:オブジェクトc(.m)ファイルをosxのオブジェクトファイル(.o)にコンパイル
gcc -c try.m -o try.o -framework Foundation
try.hがtry.mがある
int print_word(void);
です:
#include "try.h"
#import <Foundation/Foundation.h>
int print_word(void)
{
NSLog (@"say hello");
return 0;
}
Additionlyは、main()関数が含まれているのmain.cファイル、あり、そしてそれが見えます:
#include <stdio.h>
#include "try.h"
int main()
{
printf("This is main\n");
}
私は、次のコマンドでmain.oするmain.cのコンパイル:
gcc -o main.o -c main.c
その後、私はmain.oをリンクし、メインの実行可能ファイルを形成するためにtry.o:
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)
これらのエラーはどのように解決できますか?
ありがとう@EricS。私の質問に示されているように、main.oとtry.oを別々にコンパイルし、それらを組み合わせて実行可能ファイルを形成する方法はありますか? – Pony
gcc -o try.o -c try.m; gcc -o main.o -c main.c; gcc main.o try.o -framework財団 – EricS
それは働いた。ありがとう@EricS – Pony