This commit is contained in:
Anthony Samms
2025-09-15 20:50:14 -04:00
parent fee37e238f
commit 4581ab8af9
2 changed files with 110 additions and 0 deletions

View File

@@ -0,0 +1,62 @@
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")