Calling fopen in DLL called from VB?
Posted on 1997-05-23
We've written a 16 bit DLL in C++ that opens file using the MFC CStdioFile and CFile classes. These use the fopen C
runtime library function and the _dos_open library
The problem is that when this DLL is called from an Access
Basic (V2)application or a VB (V4) application that has an
Access database open, the opens of CStdioFile
objects sometimes fail. The m_cause member of
the associated CFileException object returns a 1
(generic) and the m_lOsError member contains 0.
The problem does not occur when called from a non-Access
VB application or from applications written in C++ (no
At the time of the failure, the DLL has only one other
file open (CStdioFile) and is trying to open another
The problem occurs in both Windows 3.x and Win95.
I found one short and unresolved thread on what sounded
like the same problem. One contributor pointed to a MSDN
article entitled "Creating Custom Add-in Libraries for
Word 6.0 Using the Word API." This article suggests that
using text mode DOS file handles is not guaranteed to work
in a DLL called from Word. The author of the referencing
newsgroup message suggested that this may be true for
VB and Access Basic as well. While this might explain
the behaviour, I am skeptical.