Post

Python C 연동 끄적이기

파이썬에서 c언어를 연동해서 사용하는 법을 알아보자

python에서 c언어를 사용하는 방법도 있고 c언어에서 python을 사용하는 방법이 있다.

나는 python을 알아보고 있기 때문에 python에서 c언어를 사용할 수 있도록 extending 방법을 사용하려고 한다.

window 환경이므로 c언어 컴파일러를 설치해줘야한다.

mingw

64bit window이므로 64bit를 기준으로 진행한다.

  1. https://sourceforge.net/projects/mingw-w64/files/ 여기서 mingw-W64-install.exe를 설치를 해줘야한다.

공식 홈페이지에서는 32bit 지원을 기준으로 한다.

  1. Next -> Architecture : x86_64 -> Threads : win32로 설정한다.

  2. 환경변수 설정(Path) : 보통 경로는 C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin다.

  3. cmd키고 gcc --version을 입력해서 잘나오면 완료

c언어 파일 만들기

그냥 단순한 덧셈기를 만들도록 하겠다.

1
2
3
4
5
//cal.c

int plus(int a, int b) {
    return a + b;
}

인자값 a,b를 넣으면 더한 값이 반환되는 함수

동적 라이브러리(DLL) 만들기

1
2
gcc -fPIC -c cal.c
gcc --shared -o cal.dll cal.o

특정한때에 load되는 라이브러리

컴파일러 과정에서 linker가 동작되는 부분에 해당한다.

1
main.c -(preprocessor)-> main.i -(compiler)-> main.s -(assembler)-> main.o -(linker)-> main

python언어 파일 만들기

1
2
3
4
5
6
7
8
9
10
from ctypes import cdll

def plus(a, b):
    cal = cdll.LoadLibrary('cal.dll')

    return cal.plus(a,b)

result = plus(10, 3)

print(result)

+ 추가 파이썬 실행파일(.exe) 만들기

  • pyinstaller 설치하기
1
pip install pyinstaller
  • pyinstaller로 실행파일 만들기

파일 하나만 만들기

1
2
3
4
5
pyinstaller --onefile 실행파일.py

or

pyinstaller -F 실행파일.py
  • 동적 라이브러리 등 필요한 파일 같이 만들기
1
pyinstaller 실행파일.py
  • 콘솔창 제거
1
pyinstaller -w 실행파일.py
  • 아이콘 생성
1
pyinstaller --icon=icon.ico 실행파일.py

Reference

This post is licensed under CC BY 4.0 by the author.