🧼C, C++/라이브러리 강좌(옛날자료)

dll 만들기 - Python 에서 C언어 사용 - 1

Mawile 2020. 9. 24.
728x90

안녕하세요!

오늘은 엄청 간단하고 쉽게 c언어의 함수를 python에서 실행할수있도록도와주는

동적연결라이브러리(다이내믹 라이브러리) 를 엄청 쉽게 만들건데요

IDE는 C언어의 Devcpp와 Python의 PythonIdle을(를) 사용했습니다.

그럼 시작하겠습니다...!


 

 

먼저 프로젝트를 생성해줍니다!

그다음 [ Basic ] -> [ DLL ] 을 클릭해주세요! 클릭!

 

이름은 마음대로해주세요!!

 

 

 

 

 

 

이제 헤더파일에다가 이렇게적어줍니다!

더보기

" dll.h "

#define DLLS __declspec(dllexport)

 cpp파일과 h파일에 원래있던 내용들 전부 없애주고 이렇게 적어줍니다!

더보기

" dllmain.cpp "

#include "dll.h"

extern "C"{
DLLS int sum(int a,int b,int c){
	int d = a+b+(100*c);
	return d;
}	
}

이렇게 작성해주셨다면

사진과같이 눌러주세요!


더보기

" .dll파일의 위치찾기 "

이제 컴파일되고 나온 .dll파일의 위치는 어디있을까요?

바로 프로젝트를 생성한 폴더와 같은경로에있습니다!

자그러면 이제 파이썬으로 넘어가봅시다!


더보기

" dll.py "

import ctypes

#mydll = ctypes.WinDLL('DLL파일의경로지정')
mydll = ctypes.WinDLL('C:\\Users\\3123\\바탕 화면\\PYTHON\\Decode.dll')

cu = mydll['sum']
cu.restype = ctypes.c_int
print(cu(1,2,3))

 

 

결과값: 

저가 파이썬에서 인자로 1과 2와 3을 넘겨줬죠?

다시 C언어로 거슬러올라가 맞는지확인하겠습니다

[  C언어코드 확인  ]

int sum(int a,int b,int c){
	int d = a+b+(100*c);
	return d;
}	

a가 1 ,b가 2 ,c가 3 ---> 1+2+(100*3)=303 !!

 

정상적으로 잘나왔네요!

그러면 파이썬에서 input함수와 split함수를 이용해 C언어에서 만든 sum함수로 계산하여

그 결과값을 리스트자료형에 대입해보겠습니다!

 


더보기

[[[   응용예제   ]]]

[[   dll.py   ]]

import ctypes

#mydll = ctypes.WinDLL('DLL파일의경로지정')
mydll = ctypes.WinDLL('C:\\Users\\3123\\바탕 화면\\PYTHON\\Decode.dll')

cu = mydll['sum']
cu.restype = ctypes.c_int

a,b,c = input().split(':')
a = int(a)
b = int(b)
c = int(c)
lst = []
a = cu(a,a,a)
lst.append(a)
b = cu(b,b,b)
lst.append(b)
c = cu(c,c,c)
lst.append(c)
print(lst)

결과값: 

다음DLL강좌는 문자열의 리턴값전달방법과

인자값전달방법에 대해 포스팅하겠습니다

감사합니다!


 

다음글

 

dll 만들기 - Python 에서 C언어 사용 - 2

시작하기앞서서 사용한 운영체제는 Windows10이며, IDE는 Devcpp,PythonIdle이고, 사용한 언어는 C++과 Python입니다. dll만들기 - Python 에서 C언어 사용 - 1 (int형전달) dll 만들기 - Python 에서 C언어 사용..

mawile.tistory.com

 

728x90

댓글