第三方给了一个mac os x上的静态库文件XX.a文件和头文件XX.h,比如库中有个函数叫Add()
我在Xcode上把这个库添加进入,
先#include "XX.h"文件,在main函数中直接调用代码是
#include "XX.h"
int main()
{   
    Add();
}
编译会有两个error一个警告:
ld:warning": ignoring file ../XX.a, file was built for archive which is not the architecture being linked (x86_64)
Undefined symbols for architecture x86_64:ld:symbol(s) not found for architecture x86_64
clang:error:linker command failed with exit code 1 (use -v to see invocation)
如何调用这个库的函数Add()呢?调用库函数的格式是怎么样的?

解决方案 »

  1.   

    从警告判断,你用的库和你现在的工程不匹配。所以.a文件被忽略。
    既然.a被忽略,那么调.a中函数的地方肯定编译出错了。
    不知道你是不是做的iOS,如果库是模拟器编译,使用的工程为真机编译。或者两种情况反过来,都会产生这种链接出错的问题。
      

  2.   

    这问题我也遇见过。 .a的库分为两种,一种基于X86的,只能在模拟器上运行的。一种是基于ARM的,这是只能在真机上运行的
      

  3.   

    不是iphone上的IOS.那我现在该怎么办?
      

  4.   

    我不是开发IOS的应用,你是怎么解决的?
      

  5.   

    我用lipo -info XX.a 查看,显示结果是:
    lipo:archive with no architecture specification:XX.a(cann't determine architecture for it)
      

  6.   

    用lipo -info XX.a 查看你使用的库属于哪个架构,最好弄一个混合库同时支持X86与arm7。
      

  7.   

    结贴:是因为第三方给的库有问题,重新给了一个库,用lipo -info 可以看到指定了architecture