无法链接到OS X上的iconv

rui*_*eco 2 macos macports cmake iconv ninja

我正在尝试用依赖于iconv的CMake构建一个库.我已经用Macports安装它,但每当我尝试构建库时,我都会收到以下错误:

Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      _mariadb_convert_string in my_charset.c.o
  "_iconv_close", referenced from:
      _mariadb_convert_string in my_charset.c.o
  "_iconv_open", referenced from:
      _mariadb_convert_string in my_charset.c.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

我有一个FindIconv.cmake看起来正确的文件.怎么可能出错?

Jer*_*oia 5

您可能不匹配正在使用的库/标头.看起来您使用/ usr/include中的标头编译了源代码,并尝试链接/opt/local/lib/libiconv.dylib

~ $ nm -m /usr/lib/libiconv.dylib | grep iconv_close
0000000000002ea4 (__TEXT,__text) external _iconv_close

~ $ nm -m /opt/local/lib/libiconv.dylib | grep iconv_close
0000000000003ec0 (__TEXT,__text) external _libiconv_close
Run Code Online (Sandbox Code Playgroud)

确保使用-I/opt/local/include进行编译