Sorunu incelediğiniz için teşekkür ederiz. Orada try.m adında bir nesne c dosyasıdır ve ben komutuyla bir nesne dosyası try.o bunu complie:Nesne c (.m) dosyasının bir nesne dosyasına (.o) derlenmesi osx içinde
gcc -c try.m -o try.o -framework Foundation
try.h try.m olan
int print_word(void);
olduğunu :
#include "try.h"
#import <Foundation/Foundation.h>
int print_word(void)
{
NSLog (@"say hello");
return 0;
}
Additionly, main() fonksiyonunu içerirler bir main.c dosyası vardır ve o görünür:
#include <stdio.h>
#include "try.h"
int main()
{
printf("This is main\n");
}
aşağıdaki komutla main.o için main.c derlemek:
gcc -o main main.o try.o
: Sonra
gcc -o main.o -c main.c
, ben main.o ve try.o ana çalıştırılabilir dosya oluşturmak için bağlantı bu adımlardan sonra, aşağıdaki hatalar oldu: enter image description here
hataları şunlardır:
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)
Bu hatalar nasıl çözülebilir?
Teşekkürler @EricS. Main.o'yu derlemek ve ayrı ayrı try.o'yu deneymek için bir yöntem var mı, ve sonra da sorularımda gösterildiği gibi bir yürütülebilir dosya oluşturmak için bunları birleştirin mi? – Pony
gcc -o try.o -c try.m; gcc -o main.o -c main.c; gcc main.o try.o -framework Foundation – EricS
Çalıştı. Teşekkürler @EricS – Pony