【问题标题】:Mac proj.4 compile errorMac proj.4 编译错误
【发布时间】:2011-10-21 18:03:51
【问题描述】:

我在我的 Mac 10.7 上安装了 proj.4 库和自制软件(使用 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

编辑: 库文件是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

有什么想法吗?

谢谢!

【问题讨论】:

  • 您是否安装了 64 位版本的库?使用 gcc 标志编译 32 位代码时是否也遇到同样的错误?
  • 这可能是一个愚蠢的问题,但库是预先构建的 .o 文件还是必须使用 -lproj_api 的 .so 文件?我问是因为我不确定图书馆,因为我从未听说过。

标签: c macos homebrew proj


【解决方案1】:

你应该链接到图书馆。

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

这就是错误所抱怨的原因

【讨论】:

  • @Jesus 在发布答案之前我没有看到您的评论,这是开始使用外部库时的典型错误之一。整个框架的想法使得使用外部库变得更加容易,因为它带有 -I、-L 和 -l 选项
猜你喜欢
  • 2014-04-26
  • 1970-01-01
  • 2018-03-10
  • 2017-06-09
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多