How To Call D Code from Objective C?
Mike McKee via Digitalmars-d
digitalmars-d at puremagic.com
Fri Dec 11 00:51:34 PST 2015
So I'm having trouble figuring out the D and C code.
Created dfunc.d with this:
extern (C) string dfunc(string s) {
return s ~ "response";
}
Then compiled:
$ dmd -c dfunc.d
This created dfunc.o without error.
Next, I created C code like so:
extern char * dfunc(char *);
char * c_dfunc(char *s) {
return dfunc(s);
}
But when I try to compile on Linux (as a test -- I could have
done this slightly differently on OSX), it throws this error:
$ gcc -dynamiclib -o cfunc.o cfunc.c dfunc.o -L/usr/local/lib
-lphobos2 -lpthread -lm
cc1: warning: unrecognized gcc debugging option: y [enabled by
default]
cc1: warning: unrecognized gcc debugging option: n [enabled by
default]
cc1: warning: unrecognized gcc debugging option: m [enabled by
default]
cc1: warning: unrecognized gcc debugging option: i [enabled by
default]
cc1: warning: unrecognized gcc debugging option: c [enabled by
default]
cc1: warning: unrecognized gcc debugging option: l [enabled by
default]
cc1: warning: unrecognized gcc debugging option: i [enabled by
default]
cc1: warning: unrecognized gcc debugging option: b [enabled by
default]
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 0 has invalid symbol index 11
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 1 has invalid symbol index 12
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 2 has invalid symbol index 2
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 3 has invalid symbol index 2
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 4 has invalid symbol index 11
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 5 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 6 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 7 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 8 has invalid symbol index 12
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 9 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 10 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 11 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 12 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 13 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 14 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 15 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 16 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 17 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 18 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 19 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 20 has invalid symbol index 13
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_info):
relocation 21 has invalid symbol index 22
/usr/bin/ld:
/usr/lib/debug/usr/lib/i386-linux-gnu/crt1.o(.debug_line):
relocation 0 has invalid symbol index 2
/usr/lib/gcc/i686-linux-gnu/4.8/../../../i386-linux-gnu/crt1.o:
In function `_start':
(.text+0x18): undefined reference to `main'
collect2: error: ld returned 1 exit status
More information about the Digitalmars-d
mailing list