如何将macOS上的动态库与clang(例如libjpeg)链接?

如何将macOS上的动态库与clang(例如libjpeg)链接?,macos,clang,dylib,Macos,Clang,Dylib,我正在编译一个程序,需要在macOS上链接libjpeg Computer:src user$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk

我正在编译一个程序,需要在macOS上链接libjpeg

Computer:src user$ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++   -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names  CMakeFiles/splat.dir/itwom3.0.c.o CMakeFiles/splat.dir/splat.cpp.o  -o splat  -lbz2 /opt/local/lib/libpng.dylib /opt/local/lib/libz.dylib /opt/local/lib/libjpeg.dylib
但是,在链接过程中,出现未定义的符号错误:

Undefined symbols for architecture x86_64:
  "jpeg_std_error(jpeg_error_mgr*)", referenced from:
  ImageWriterInit(ImageWriter_st*, char const*, ImageType, int, int) in splat.cpp.o
该符号确实存在于相关库中:

Computer:src user$ nm -a /opt/local/lib/libjpeg.dylib | grep jpeg_std_error
0000000000017584 T _jpeg_std_error

有什么明显的地方我做错了吗?< /P> < P>错误中的符号名称包括类型信息(参数类型)表明它是一个被损坏的C++符号。libjpeg不提供该符号,它只提供C符号。换句话说,

jpeg\u std\u error(jpeg\u error\u mgr*)
!=<代码>\u jpeg\u std\u错误


这表明您需要在
extern“C”{…}

中包含libjpeg头的
#include
,这就是我的问题所在。你的建议解决了这个问题。谢谢