메뉴 건너뛰기

개발도구


1. 호출할 C 코드를 test.c 파일이라는 이름으로 작성합니다. (Write C callee functions like belows)

int foo(int a)
{
    return a + 5;
}

char *bar(char *c) {
    return c;
}

2. test.c 파일을 빌드합니다. (Type build command like below)

gcc -o test.so -shared -fPIC test.c


3. 파이선 코드 caller.py 를 작성합니다. (Write Python caller code like belows)

import ctypes

test_c_codes = ctypes.cdll.LoadLibrary("test.so")
foo_c_func = test_c_codes.foo
bar_c_func = test_c_codes.bar
bar_c_func.restype = ctypes.c_char_p

print foo_c_func(10)
print bar_c_func("airpage")


4. 라이브러리 경로를 가르키는 환경변수를 설정합니다 (Set environment variable to so file's location)

$ set LD_LIBRARY_PATH = $LD_LIBRARY_PATH:./


5. caller.py 를 실행해 봅니다. (Type execution command like below and check the result)

$ python caller.py

15
airpage






번호 제목 글쓴이 날짜 조회 수
공지 [TIP] Jedis로 원격지 Redis접속에 실패할때 파이팅건맨 2017.09.27 2411
공지 [TIP] Command Line 에서 INF 설치 방법 파이팅건맨 2010.02.05 2228
공지 [LINK] USB정보 분석 툴- USB Monitor, USB머하니 파이팅건맨 2004.10.13 2020
11 [TIP] SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible ... only_full_group_by 오류 발생시 파이팅건맨 2017.08.02 531
10 [TIP] gcov 사용시 stamp mismatch with graph file 오류 파이팅건맨 2017.08.03 315
9 [TIP] TOMCAT-JSP 사용시 get 으로 전송하는 한글이 깨어질때 파이팅건맨 2017.08.04 310
8 [TIP] 스프링 웹서비스에서 SSL을 위한 인증서 설정 방법 파이팅건맨 2017.09.08 577
7 [TIP] MySQL 서버로 로컬PC에 있는 대용량 데이터 올리기 파이팅건맨 2017.09.20 524
6 [TIP] MySQL - 2개이상의 필드 정보를 이용하여 중복 레코드 삭제하기 파이팅건맨 2017.09.27 1694
5 [TIP] Jedis로 원격지 Redis접속에 실패할때 파이팅건맨 2017.09.27 2411
4 [TIP] Android Studio 에서 빌드는 되는데 라이브러리를 찾지 못했다는 오류가 표시될 때 [2] 파이팅건맨 2018.06.22 907
» [TIP] 파이선에서 C 코드 호출하기 (How to call C function from Python) [1] 파이팅건맨 2018.08.14 399
2 [TIP] npm 으로 모듈 설치할때 "xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance" 오류 발생시... 파이팅건맨 2019.01.22 221
1 [TIP] 맥의 XCode에서 OpenCV를 사용하기 위한 설정 방법 (The way how to set up your environment to use OpenCV with Xcode on your Mac.) 파이팅건맨 2019.06.22 48
위로