본문 바로가기
C, C++

C/C++ dll 파이썬에서 호출 하기-#2

by 오징어땅콩2 2025. 2. 28.
반응형

문자열 전달 하기

 

#include <stdio.h>

__declspec(dllexport) void print_message(const char* message) {
    printf("Received message: %s\n", message);
}

 

 

import ctypes

# DLL 로드
mydll = ctypes.WinDLL(r"C:\경로\mydll.dll")

# 함수 원형 지정
mydll.print_message.argtypes = [ctypes.c_char_p]
mydll.print_message.restype = None  # 반환값 없음

# 문자열 전달
msg = b"Hello from Python!"  # 반드시 b'' 형태로 바이트 문자열 사용
mydll.print_message(msg)

 

 

#include <stdio.h>
#include <string.h>

__declspec(dllexport) void modify_message(char* message) {
    strcat(message, " (Modified in C)");
}

 

 

# 버퍼 생성 (수정 가능한 문자열)
buffer = ctypes.create_string_buffer(b"Hello from Python!", 100)  # 최대 100바이트

# 함수 원형 설정
mydll.modify_message.argtypes = [ctypes.c_char_p]
mydll.modify_message.restype = None

# 함수 호출
mydll.modify_message(buffer)

# 결과 출력
print(buffer.value.decode("utf-8"))  # "Hello from Python! (Modified in C)"

'C, C++' 카테고리의 다른 글

C/C++ dll 파이썬에서 호출 하기  (0) 2025.02.27
가끔 사용하는 코딩 #1  (0) 2024.10.10
코딩 이야기 #1  (0) 2020.07.22

댓글