찾다

 >  Q&A  >  본문

objective-c 调用第三方c语言库

我想从object-c程序中,调用svn的api,实现版本控制的功能。
我先在mac上费了好大力气,成功编译了subversion的源码。然后在xcode的build-settings里面的header path中加入了svn api的头文件路径。又在build-phases中将libsvn_client_1.a引入到了libraries里面。但编译的时候报错,代码如下:

头部引入

#import "svn_client.h"
- (void)tableViewSelectionDidChange:(NSNotification *)notification
{
    NSLog(@"select one row!");
    char* url = "http://***.***.com/svn/***/unity/****";
    //list_repo2(url);
    //listRepo(url);
    // 测试下
    svn_checksum_size(nil);
}

报错的信息如下 :

Undefined symbols for architecture x86_64:
  "_svn_checksum_size", referenced from:
      -[ViewController tableViewSelectionDidChange:] in ViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

拜托大家帮忙看看~~

PHP中文网PHP中文网2761일 전456

모든 응답(2)나는 대답할 것이다

  • 阿神

    阿神2017-04-24 09:15:32

    문제가 해결되었습니다. @isteven의 댓글을 확인해주세요

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-24 09:15:32

    정적 라이브러리가 x86_64 해당 바이너리를 컴파일하지 않습니다. 직접 컴파일하는 경우 x86_64에 대한 지원을 추가해야 합니다. 지원하지 않아도 상관없습니다. 시뮬레이터에서는 실행되지 않고 실제 머신에서만 실행될 수 있습니다.
    또한 실제 머신에서 실행할 때 amr64이 지원되지 않으면 오류가 보고됩니다.
    지금까지 전체 CPU 지원에 필요한 컴파일 옵션을 설정합니다(마지막 두 개는 시뮬레이터를 지원하는 데 사용됨): armv7 armv7s arm64 x86 x86_64.

    회신하다
    0
  • 취소회신하다