| import ctypes
|
| import os
|
|
|
| # Define the argument and result types for the DLL
|
| # Assume DLL is built as ExportFeatureBatch(void* pb_bytes, int pb_len, char* out_path, int out_path_len)
|
|
|
| DLL_PATH = r"C:\DualEA_FeatureBatches\feature_export.dll" # Adjust as needed
|
|
|
| dll = ctypes.CDLL(DLL_PATH)
|
|
|
| ExportFeatureBatch = dll.ExportFeatureBatch
|
| ExportFeatureBatch.argtypes = [ctypes.c_void_p, ctypes.c_int, ctypes.c_char_p, ctypes.c_int]
|
| ExportFeatureBatch.restype = ctypes.c_int
|
|
|
| def export_feature_batch(pb_bytes: bytes) -> str:
|
| out_path_buf = ctypes.create_string_buffer(512)
|
| result = ExportFeatureBatch(
|
| ctypes.c_char_p(pb_bytes),
|
| len(pb_bytes),
|
| out_path_buf,
|
| ctypes.sizeof(out_path_buf)
|
| )
|
| if result != 0:
|
| raise RuntimeError(f"DLL ExportFeatureBatch failed with code {result}")
|
| return out_path_buf.value.decode('utf-8')
|
|
|
| # Usage example (assuming you have pb_bytes):
|
| # path = export_feature_batch(pb_bytes)
|
| # print("Exported to:", path)
|