A virtual function table (VFT) is usually generated in the compilation unit that defines the first non-inline virtual function in a class. You can use the /Wvft option to find out which function that is. The object file that contains the definition for this function will also contain the VFT.
Once you know which object file contains the VFT, use CPPFILT to dump the symbols in the object file. One of these symbols will be the name of the VFT that you want to export.
After you have determined what the name of the VFT is, you can either use the output of CPPFILT directly in the DEF file or you can manually add an entry for the VFT in the DEF file.
An example of the symbols dumped by CPPFILT:
;From object file: .\vf.obj
;PUBDEFs (Symbols available from object file):
;area::?getdim(double&,double&)
?getdim__4areaFRdT1
;area::_objectCount
_objectCount__4area
;triangle::?__ct()
?__ct__8triangleFv
;rectangle::?getarea()
?getarea__9rectangleFv
;rectangle::_objectCount
_objectCount__9rectangle
___vft9rectangle4area
;area::?__ct()
?__ct__4areaFv
;area::?setarea(double,double)
?setarea__4areaFdT1
;rectangle::?__ct()
?__ct__9rectangleFv
___vft8triangle4area
___vft4area
;triangle::_objectCount
_objectCount__8triangle
;area::?getarea()
?getarea__4areaFv
;triangle::?getarea()
?getarea__8triangleFv
Example of VFTs in the Module Definition file:
LIBRARY
EXPORTS
;From object file: .\vf.obj
;PUBDEFs (Symbols available from object file):
;rectangle::_objectCount
_objectCount__9rectangle
___vft9rectangle4area
;rectangle::?__ct()
?__ct__9rectangleFv
___vft8triangle4area
___vft4area