Xcode4构建axis2/c库时的链接器问题

Xcode4构建axis2/c库时的链接器问题,c,xcode4,linker,axis2c,C,Xcode4,Linker,Axis2c,我正在使用axis2/Cwebservices框架构建一个简单的c库。我可以在命令行中使用gcc构建我的库,但是在Xcode4中成功配置我的项目时遇到了困难 命令行中的以下生成工作正常: gcc -shared -o liblatlon2pcde.so -I$AXIS2C_HOME/include/axis2-1.6.0/ \ -L$AXIS2C_HOME/lib -laxutil -laxis2_axiom -laxis2_parser -laxis2_engine \ -l

我正在使用axis2/Cwebservices框架构建一个简单的c库。我可以在命令行中使用gcc构建我的库,但是在Xcode4中成功配置我的项目时遇到了困难

命令行中的以下生成工作正常:

gcc -shared -o liblatlon2pcde.so -I$AXIS2C_HOME/include/axis2-1.6.0/ \ 
    -L$AXIS2C_HOME/lib -laxutil -laxis2_axiom -laxis2_parser -laxis2_engine \
    -lpthread -laxis2_http_sender -laxis2_http_receiver latlon2pcde.c \
    latlon2pcde_skeleton.c
在Xcode4中,我通过构建设置进行了类似的配置

用户定义

AXIS2C_HOME    /usr/local/axis2c
标题搜索路径

${AXIS2C_HOME}/include/axis2-1.6.0
${AXIS2C_HOME}/lib
库搜索路径

${AXIS2C_HOME}/include/axis2-1.6.0
${AXIS2C_HOME}/lib
其他链接器标志

-laxutil -laxis2_axiom -laxis2_parser -laxis2_engine -lpthread -laxis2_http_sender -laxis2_http_receiver
但是,生成失败,报告找不到-laxutil

ld: library not found for -laxutil
Command /Developer/usr/bin/clang failed with exit code 1
完整输出为:

Build target latlon2pcde

Ld /Users/greg/Library/Developer/Xcode/DerivedData/latlon2pcde-diklkgmudvrwwmcnlbjubeshwrqq/Build/Products/Debug/liblatlon2pcde.dylib normal x86_64
cd "/Users/greg/Documents/Development/latlon2pcde/axis2 service"
setenv MACOSX_DEPLOYMENT_TARGET 10.7
/Developer/usr/bin/clang -arch x86_64 -dynamiclib -isysroot /Developer/SDKs/MacOSX10.7.sdk -L/Users/greg/Library/Developer/Xcode/DerivedData/latlon2pcde-diklkgmudvrwwmcnlbjubeshwrqq/Build/Products/Debug -F/Users/greg/Library/Developer/Xcode/DerivedData/latlon2pcde-diklkgmudvrwwmcnlbjubeshwrqq/Build/Products/Debug -filelist /Users/greg/Library/Developer/Xcode/DerivedData/latlon2pcde-diklkgmudvrwwmcnlbjubeshwrqq/Build/Intermediates/latlon2pcde.build/Debug/latlon2pcde.build/Objects-normal/x86_64/latlon2pcde.LinkFileList -install_name /usr/local/lib/liblatlon2pcde.dylib -mmacosx-version-min=10.7 -laxutil -laxis2_axiom -laxis2_parser -laxis2_engine -lpthread -laxis2_http_sender -laxis2_http_receiver -single_module -compatibility_version 1 -o /Users/greg/Library/Developer/Xcode/DerivedData/latlon2pcde-diklkgmudvrwwmcnlbjubeshwrqq/Build/Products/Debug/liblatlon2pcde.dylib

ld: library not found for -laxutil
Command /Developer/usr/bin/clang failed with exit code 1

看来我的库搜索路径没有进入链接器。你知道为什么吗

明确添加标题搜索和库搜索路径,以代替
${AXIS2C_HOME}
。这是垃圾,但应该有用。

谜团已经解开。似乎这是一个“项目”和“目标”设置不一致的问题,即我改变了一个,但没有改变另一个。我从新的构建设置开始,按照我的原始帖子和所有作品中的描述重新应用。如果有疑问,请“关闭并再次打开”

是的,看起来你是对的;命令行中应该有一个
-L/usr/local/axis2c
。您是否将此用于客户端Web服务访问?我想知道是什么让你选择了这个框架而不是其他框架(我想马上自己做webservices访问)?我用这个来编写一个在apacheaxis模块中运行的服务。我的一个好处是它在某种程度上支持REST,我对SOAP还不太感兴趣。如果REST支持不是必需的,你可能想看看gSoap。是的,我也在看gSoap。不过,我想从iOS访问webservices客户端,这可能会很有趣……是的,这不是一件小事。我在iOS中使用gSoap创建了一个客户端,它运行得非常好。我不相信axis2/c已经移植到iOS。如果您的需求很简单,那么您最好使用NSXML手工编写请求。我无法让存根为我的应用程序工作,但您可能想尝试一下。不幸的是,这没有什么区别。好的,看起来您在Xcode中将其设置在了错误的位置。