It's having the problem when the Visual basic DLL attempts to make the call into the VC++ DLL. For some reason this call is not taking place on the Win9x machine, but on the NT/2k machine it works fine. The visual basic declaration of the VC++ dll function looks like this: ' Declare VC++ DLL function import Declare Function IndexMsg Lib "OL_Index" Alias "IndexMessage" (ByVal msg_path As String, ByVal msg_note_path As String) As Integer The actual call to this function looks like: ' Call VC++ DLL function to start the import process result = IndexMsg((temp_path + MAIL_NAME), (temp_path + MAIL_NOTE_NAME)) On the VC++ side of things, the function declartion looks like: extern "C" UINT IndexMessage(LPSTR msg_path, LPSTR msg_note_path); And the implementation like: extern "C" UINT IndexMessage(LPSTR msg_path, LPSTR msg_note_path) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); // debug call to see how far the call goes AfxMessageBox("Made it into Index func!", MB_OK); // call the function to perform the indexing tasks return theApp.DoDisp(CString(msg_path), CString(msg_note_path)); } And finally my .DEF file for the VC++ DLL exports looks like: LIBRARY "OL_Index" DESCRIPTION 'OL_Index Windows Dynamic Link Library' EXPORTS ; Explicit exports can go here IndexMessage @59 PRIVATE