Microsoft KB Archive/168414

= BUG: Binary Compatibility Leaves Source File in Open State =

Article ID: 168414

Article Last Modified on 12/10/2003

-

APPLIES TO


 * Microsoft Visual Basic 5.0 Control Creation Edition
 * Microsoft Visual Basic 5.0 Learning Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition

-



This article was previously published under Q168414



SYMPTOMS
When compiling an ActiveX Server (EXE or DLL), you may get the following error at the end of compiling:

"An unexpected error occurred during compiling or linking"

If you choose to view the error details, the following message will be displayed:

"LINK : fatal error LNK1104: cannot open file "



CAUSE
When the Binary Compatibility property is set for an ActiveX Server component (.EXE or .DLL), Microsoft Visual Basic 5.0 leaves the compatible source file in an open state until the Visual Basic 5.0 environment is closed.

NOTE: The behavior can also surface randomly with other types of Visual Basic projects when Binary Compatibility is used.



RESOLUTION
There are a few workarounds to this behavior:


 * When using the Binary Compatibility property, do not set the compatible source file to the same filename and location as the compiled component's destination file. -or-


 * Use the Project Compatibility option or the No Compatibility option whenever possible. -or-


 * Close and re-open the Microsoft Visual Basic environment when it is necessary to delete and/or overwrite the file which is locked in the open state.



STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this bug and will post new information here in the Microsoft Knowledge Base as it becomes available.



MORE INFORMATION
In Microsoft Visual Basic 5.0's development environment, the user has the option to select the following compatible component options:


 * No Compatibility
 * Project Compatibility
 * Binary Compatibility

This is done from the Component Tab of the Project Properties Dialog. The set of options on the dialog box determines how the project is to be compiled. (For more details on Compatibility, select the Component Tab and then press the Help button on the dialog.)

Selecting Project Compatibility or Binary Compatibility enables the file location textbox. The user can then select the source file for the compatibility during the compile process.

During compilation of the project, Visual Basic opens the compatible source file, reads specific information, and then writes the compiled compatible file to the destination specified on the Make Project dialog.

If the user selects Binary Compatibility, Visual Basic does not close the source file for an ActiveX EXE Server until Visual Basic itself is closed. This is not the case for the Project Compatibility option, nor is it the case for ActiveX Control projects.

The result of leaving the file open is not an issue for the user unless the user selects the same filename and location for the destination file. If they are the same, the user will encounter an error.

