C++ OS X编译错误:未找到体系结构x86_64的ld:symbol

C++ OS X编译错误:未找到体系结构x86_64的ld:symbol,c++,xcode,macos,makefile,C++,Xcode,Macos,Makefile,新来这里编译的,请耐心听我说。我尝试在OXX.103上编译一些C++代码,使用制作< /C>。我已经安装了XCode 6.3.1。我的Makefile是使用qmake生成的。编译器运行良好,直到尝试运行最终生成命令并抛出错误: Undefined symbols for architecture x86_64: "_iconv", referenced from: puntoexe::charsetConversionIconv::myIconv(void*, char*, un

新来这里编译的,请耐心听我说。我尝试在OXX.103上编译一些C++代码,使用<代码>制作< /C>。我已经安装了XCode 6.3.1。我的Makefile是使用qmake生成的。编译器运行良好,直到尝试运行最终生成命令并抛出错误:

Undefined symbols for architecture x86_64:
  "_iconv", referenced from:
      puntoexe::charsetConversionIconv::myIconv(void*, char*, unsigned long) const in charsetConversionIconv.o
  "_iconv_close", referenced from:
      puntoexe::charsetConversionIconv::close() in charsetConversionIconv.o
  "_iconv_open", referenced from:
      puntoexe::charsetConversionIconv::initialize(int) in charsetConversionIconv.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [dicom2jpeg.app/Contents/MacOS/dicom2jpeg] Error 1
我发现这里有多个线程描述了一个类似的问题,很明显,这归结为编译器链接到一个32位库。对其他人有效的主要建议是将以下代码添加到Makefile中:

-stdlib=libstdc++
qmake生成的Makefile如下所示:

CC            = clang
CXX           = clang++
DEFINES       = -DQT_NO_DEBUG
CFLAGS        = -pipe -mmacosx-version-min=10.7 -O2 -arch x86_64 -Wall -W $(DEFINES)
CXXFLAGS      = -pipe -stdlib=libc++ -mmacosx-version-min=10.7 -O2 -arch x86_64 -Wall -W $(DEFINES)
INCPATH       = -I/usr/local/Cellar/qt/4.8.6/mkspecs/unsupported/macx-clang-libc++ -I. -I/usr/local/Cellar/qt/4.8.6/include -I.
LINK          = clang++
LFLAGS        = -headerpad_max_install_names -stdlib=libc++ -mmacosx-version-min=10.7 -arch x86_64
LIBS          = $(SUBLIBS)  -L/usr/local/Cellar/qt/4.8.6/lib -lpthread
因此,我已将Makefile更改为链接到相应的库:

CC            = clang
CXX           = clang++
DEFINES       = -DQT_NO_DEBUG
CFLAGS        = -pipe -mmacosx-version-min=10.7 -O2 -arch x86_64 -Wall -W $(DEFINES)
CXXFLAGS      = -pipe -stdlib=libstdc++ -mmacosx-version-min=10.7 -O2 -arch x86_64 -Wall -W $(DEFINES)
INCPATH       = -I/usr/local/Cellar/qt/4.8.6/mkspecs/unsupported/macx-clang-libc++ -I. -I/usr/local/Cellar/qt/4.8.6/include -I.
LINK          = clang++
LFLAGS        = -headerpad_max_install_names -stdlib=libstdc++ -mmacosx-version-min=10.7 -arch x86_64
LIBS          = $(SUBLIBS)  -L/usr/local/Cellar/qt/4.8.6/lib -lpthread

但是,没有骰子。仍然在最终构建时抛出相同的错误。我错过什么了吗

您可以包括其余的链接器错误消息,特别是找不到哪些符号吗?当然,只添加了它们。您是否在charsetconversionv.cpp中有
#include
?链接器必须链接到
libiconv.dylib
库。您必须将
-liconv
标志添加到
LDFLAGS
或在Xcode项目中添加库。我认为不需要
-stdlib=libstdc++
。-LDFLAGS中添加的liconv有效。谢谢,巴夫。如果你加上答案,我就+1给你。