2012-11-27 2 views
0

MAC OS X에서 XCode IDE를 사용하여 c-code에서 SWI-Prolog로 인터페이스하려고합니다.XCode의 C-Programm에서 SWI-Prolog 로의 인터페이스

I've는 헤더 파일을 포함하고 다음 예제 코드를 사용 :

#include <stdio.h> 
#include <SWI-Prolog.h> 
#include <SWI-Stream.h> 

int main(int argc, const char * argv[]) 
{ 

char *av[10]; 
int ac = 0; 

av[ac++] = "/opt/local/lib/swipl-6.2.2/bin/i386-darwin12.2.1/swipl"; 
av[ac++] = "-x"; 
av[ac++] = "mystate"; 
av[ac] = NULL; 

#ifdef READLINE /* Remove if you don't want readline */ 
PL_initialise_hook(install_readline); 
#endif 

if (!PL_initialise(ac, av)) 
    PL_halt(1); 

PL_halt(PL_toplevel() ? 0 : 1); 


printf("done...\n"); 
return 0; 
} 

나는 또한 빌드 헤더에 설정 및 lib 디렉토리 경로에 연결 :

헤더 검색 경로 :/옵션/지역/lib 디렉토리/swipl-6.2.2/

라이브러리 검색 경로

을 포함 : 코드를 실행하는 동안 /opt/local/lib/swipl-6.2.2/lib/i386-darwin12.2.1

하지만 난 얻을 ~의 llowing 오류 :

Undefined symbols for architecture x86_64: 
    "_PL_halt", referenced from: 
     _main in main.o 
    "_PL_initialise", referenced from: 
     _main in main.o 
    "_PL_toplevel", referenced from: 
     _main in main.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

사람이 내 코드가 실행 얻기 위해 나를 도울 수 있습니까? 사전 및 종류에

덕분에

Solick 당신은 설정에서 올바른 경로를 설정하더라도

+0

불일치 i386 대 x86_64? – CapelliC

+0

흠, 이것이 MAC OS X 용 설치 파일이었습니다 ...하지만 어쩌면 저는 제 자신의 맥에서 swi-prolog를 직접 컴파일해야합니다 ... 힌트를 주셔서 감사 드리며, 시도해 보겠습니다 ... 하지만 다른 손 : 터미널에서 swi-prolog를 실행해도 문제없이 잘 작동합니다 ... – solick

+0

아키텍처 x86_64에 대한 ld 경고 ... 잘못 구성된 것 같습니다 – CapelliC

답변

0

, 그것은 자동으로 연결하는 올바른 라이브러리를 찾을 수 없습니다 간주한다. 실제 라이브러리도 추가해야합니다.

+0

힌트를 보내 주셔서 감사합니다. 하지만 lib와 링크 할 곳은 어디입니까? lib 디렉토리에 * .dylib 파일이 많이 있습니다. – solick

0

저는 우분투에서 (그리고 그래도 Windows에서는 여전히) 작동하며, pkg-config 지원에 감사드립니다.

만약 이미 익숙하다면, SWI-Prolog는 로컬에서 컴파일 될 때 ~/lib/pkgconfig 디렉토리를 생성합니다.

그런 다음 pkg-config 구성에 해당 디렉토리를 추가하고 (IMHO)와 함께 SW를 사용할 수 있습니다.

+0

안녕하세요, 미리 컴파일 된 버전을 사용하고 있습니다. 문제는 메이크 파일이 다른 (및 그래픽 :) XCode 함께입니다. – solick

관련 문제