C++ linker error combining c and cpp code: 'unsupported file format' -
i'm trying combine c , c++ code, when try link unexpected error:
ld: warning: ignoring file edmonds.o, file built unsupported file format ( 0x43 0x50 0x43 0x48 0x01 0x0c 0x00 0x00 0x64 0x08 0x00 0x00 0x0b 0x02 0x68 0x42 ) not architecture being linked (x86_64)
here's setup:
dummy.c
void edmonds(int n, double* weights, int* heads);  int main() {     int = 1;     edmonds(1234,0,&a);     return 0; }   edmonds.hpp:
extern "c" void edmonds(int n, double* weights, int* heads);  void edmonds(int n, double* weights, int* heads) {     heads[0]=n*4;     return; }   i compile manually using following sequence of commands:
clang -c dummy.c -o dummy.o clang++ -c edmonds.hpp -o edmonds.o clang++ edmonds.o dummy.o -o main.o   with above mentioned result
ld: warning: ignoring file edmonds.o, file built unsupported file format ( 0x43 0x50 0x43 0x48 0x01 0x0c 0x00 0x00 0x64 0x08 0x00 0x00 0x0b 0x02 0x68 0x42 ) not architecture being linked (x86_64): edmonds.o undefined symbols architecture x86_64:   "_edmonds", referenced from:       _main in dummy.o ld: symbol(s) not found architecture x86_64 clang: error: linker command failed exit code 1 (use -v see invocation)   my system osx yosemite. don't understand why edmonds.hpp gets compiled weird file format not x86_64.
 
 
  
Comments
Post a Comment