class_docstr: Concrete class that implements an interface to Microsoft Visual C++,
  as defined by the CCompiler abstract class.
code: def object_filenames(
      self, source_filenames, strip_dir=0, output_dir=""
  ):
      # Copied from ccompiler.py, extended to return .res as 'object'-file
      # for .rc input file
      if output_dir is None:
          output_dir = ""
      obj_names = []
      for src_name in source_filenames:
          (base, ext) = os.path.splitext(src_name)
          base = os.path.splitdrive(base)[1]  # Chop off the drive
          base = base[
              os.path.isabs(base) :
          ]  # If abs, chop off leading /
          if ext not in self.src_extensions:
              # Better to raise an exception instead of silently continuing
              # and later complain about sources and targets having
              # different lengths
              raise CompileError(
                  "Don't know how to compile %s" % src_name
              )
          if strip_dir:
              base = os.path.basename(base)
          if ext in self._rc_extensions:
              obj_names.append(
                  os.path.join(output_dir, base + self.res_extension)
              )
          elif ext in self._mc_extensions:
              obj_names.append(
                  os.path.join(output_dir, base + self.res_extension)
              )
          else:
              obj_names.append(
                  os.path.join(output_dir, base + self.obj_extension)
              )
      return obj_names
  
imports: import os
  import subprocess
  import sys
  import re
  import warnings
  from .errors import DistutilsExecError, DistutilsPlatformError, CompileError, LibError, LinkError
  from .ccompiler import CCompiler, gen_lib_options
  from ._log import log
  from .util import get_platform
  import winreg
label_desc: Use image node_id 3 for calling the MSVCCompiler obj's underlying member method code with example usage: obj.object_filenames(source_filenames, strip_dir, output_dir) and returns: obj_names