mirror of
https://github.com/Yonokid/PyTaiko.git
synced 2026-02-04 19:50:12 +01:00
63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
import cffi
|
|
import os
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
def test_dll_loading():
|
|
"""Test DLL loading with detailed error reporting"""
|
|
|
|
ffi = cffi.FFI()
|
|
|
|
# Define minimal interface first
|
|
ffi.cdef("""
|
|
void list_host_apis(void);
|
|
bool is_audio_device_ready(void);
|
|
""")
|
|
|
|
dll_path = "./libaudio.dll"
|
|
|
|
print(f"Testing DLL: {dll_path}")
|
|
print(f"DLL exists: {os.path.exists(dll_path)}")
|
|
|
|
if os.path.exists(dll_path):
|
|
print(f"DLL size: {os.path.getsize(dll_path)} bytes")
|
|
|
|
try:
|
|
# Try to load the DLL
|
|
print("Attempting to load DLL...")
|
|
lib = ffi.dlopen(dll_path)
|
|
print("✓ DLL loaded successfully!")
|
|
|
|
# Try to call a simple function
|
|
print("Testing function call...")
|
|
ready = lib.is_audio_device_ready()
|
|
print(f"✓ Function call successful: {ready}")
|
|
|
|
# Try calling list_host_apis (this initializes PortAudio)
|
|
print("Testing list_host_apis...")
|
|
lib.list_host_apis()
|
|
print("✓ list_host_apis completed")
|
|
|
|
return True
|
|
|
|
except Exception as e:
|
|
print(f"✗ Error: {e}")
|
|
print(f"Error type: {type(e).__name__}")
|
|
|
|
# Additional debugging
|
|
if "GetLastError" in str(e):
|
|
import ctypes
|
|
error_code = ctypes.windll.kernel32.GetLastError()
|
|
print(f"Windows error code: 0x{error_code:x} ({error_code})")
|
|
|
|
return False
|
|
|
|
if __name__ == "__main__":
|
|
success = test_dll_loading()
|
|
if not success:
|
|
print("\nDebugging steps:")
|
|
print("1. Check DLL dependencies with: python check_deps.py")
|
|
print("2. Ensure all required DLLs are in PATH or same directory")
|
|
print("3. Verify DLL architecture matches Python (64-bit)")
|
|
print("4. Try the minimal test_dll.dll first")
|