I don't know if there is an issue with Plato or not, but here's what I had to do for the externally generated DLL to use it in Plato.
Plato creates a BuildLog file that contains the commands used to compile/link. Here is the file as created:
FTN95.EXE 'Z:\DXF_Decode\MAIN.for' /NO_BANNER /VS7 /DELETE_OBJ_ON_ERROR /ERROR_NUMBERS /UNLIMITED_ERRORS /IMPORT_LIB 'dxflib_dll_normal.dll' /WIDE_SOURCE /FPP /CFPP /BINARY 'Release\Win32\MAIN.obj'
slink.exe 'dxflib_dll_normal.dll' -OUT:'Release\Win32\DXF_Decoder.exe' @'Z:\DXF_Decode\link.lst'
Unfortunately, it does not link up OK. The errors are:
Linking...
WARNING the following symbols are missing:
dxf_circle_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
start_block_acad_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
dxf_solid_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
dxf_deinit_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
end_block_acad_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
dxf_symbol_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
dxf_line_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
dxf_ellipse_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
dxf_init_ftn95 Z:\DXF_Decode\Release\Win32\MAIN.obj
(Z:\DXF_DECODE\MAIN.FOR)
Creating executable: Release\Win32\DXF_Decoder.exe
Linking completed.
However, the following (manually created) file compiles and links just fine.
FTN95.EXE 'Z:\DXF_Decode\MAIN.for' /NO_BANNER /VS7 /DELETE_OBJ_ON_ERROR /ERROR_NUMBERS /UNLIMITED_ERRORS /IMPORT_LIB 'dxflib_dll_normal.dll' /WIDE_SOURCE /FPP /CFPP /BINARY 'Release\Win32\MAIN.obj'
slink.exe -OUT:'DXF_Decoder.exe' @'Z:\DXF_Decode\link.lst' -rlo:'dxflib_dll_normal.dll'
The differences in the generated command lines are subtle. In Plato, in the Project description, I specified the Import Library. This worked with the compile, but not for the Link. I tried a number of different ways to specify the library and get the link step to work, but was not successful.
I only point this out in case that you might need to do some alternate language programming and need to use a DLL. In this instance, I was testing the interface and output products. Using the DLL for 'production' is not done in Plato.