class_docstr: Concrete class that implements an interface to Microsoft Visual C++,
  as defined by the CCompiler abstract class.
class_docstr_tok: ["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=""
  ):
      ext_map = {
          **{ext: self.obj_extension for ext in self.src_extensions},
          **{
              ext: self.res_extension
              for ext in self._rc_extensions + self._mc_extensions
          },
      }
  
      output_dir = output_dir or ""
  
      def make_out_path(p):
          base, ext = os.path.splitext(p)
          if strip_dir:
              base = os.path.basename(base)
          else:
              _, base = os.path.splitdrive(base)
              if base.startswith((os.path.sep, os.path.altsep)):
                  base = base[1:]
          try:
              # XXX: This may produce absurdly long paths. We should check
              # the length of the result and trim base until we fit within
              # 260 characters.
              return os.path.join(output_dir, base + ext_map[ext])
          except LookupError:
              # 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 {}".format(p)
              )
  
      return list(map(make_out_path, source_filenames))
  
imports: import os
  import subprocess
  import winreg
  from distutils.errors import DistutilsExecError, DistutilsPlatformError, CompileError, LibError, LinkError
  from distutils.ccompiler import CCompiler, gen_lib_options
  from distutils import log
  from distutils.util import get_platform
  from itertools import count
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: list, os