code: def SetCTypesForLibrary(libname, fn_table):
    
    libpath = ctypes.util.find_library(libname)
    if not libpath:
      raise ErrorLibNotFound('Library %s not found' % libname)
  
    lib = ctypes.cdll.LoadLibrary(libpath)
  
    # We need to define input / output parameters for all functions we use
    for (function, args, result) in fn_table:
      f = getattr(lib, function)
      f.argtypes = args
      f.restype = result
  
    return lib
docs: Set function argument types and return types for an ObjC library.
  
    Args:
      libname: Library name string
      fn_table: List of (function, [arg types], return types) tuples
    Returns:
      ctypes.CDLL with types set according to fn_table
    Raises:
      ErrorLibNotFound: Can't find specified lib