Ошибка компиляции Mac proj.4

Я установил библиотеку proj.4 с доморощенным на свой Mac 10.7 (используя gcc-4.2). При попытке скомпилировать следующий код:

#include <proj_api.h>


int main(void) {
    projPJ pj_merc;
    pj_merc = pj_init_plus("+proj=merc");
    pj_free(pj_merc);
    return 0;
}

Я получаю эту ошибку:

$ gcc-4.2 test.c 
Undefined symbols for architecture x86_64:
  "_pj_init_plus", referenced from:
      _main in cccf4vey.o
  "_pj_free", referenced from:
      _main in cccf4vey.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

EDIT: файл библиотеки 64-битный (gcc-4.2 -m32 test.c приводит к той же ошибке):

$ file /usr/local/lib/libproj.dylib 
/usr/local/lib/libproj.dylib: Mach-O 64-bit dynamically linked shared library x86_64

Есть идеи, что не так?

Спасибо!


person xyz-123    schedule 07.08.2011    source источник
comment
Вы установили 64-битную версию библиотеки? Вы получаете ту же ошибку при использовании флага gcc для компиляции 32-битного кода?   -  person Jesus Ramos    schedule 07.08.2011
comment
Это может быть глупый вопрос, но является ли библиотека предварительно созданными файлами .o или это файлы .so, которые вы должны использовать -lproj_api? Я спрашиваю, потому что не уверен в библиотеке, так как никогда о ней не слышал.   -  person Jesus Ramos    schedule 07.08.2011


Ответы (1)


Вы должны ссылаться на библиотеку.

gcc-4.2 test.c -L/usr/local/lib -lproj

Вот на что жалуется ошибка

person Petesh    schedule 07.08.2011
comment
@ Иисус, я не видел твоего комментария до того, как опубликовал ответ. Это одна из типичных ошибок при начале использования внешних библиотек. Вся идея фреймворка значительно упрощает использование внешних библиотек, так как содержит опции -I, -L и -l. - person Petesh; 07.08.2011