Microsoft KB Archive/201565

= PRB: Visual Basic Read-only .exp/.lib Files Cause Compile Error =

Article ID: 201565

Article Last Modified on 5/1/2001

-

APPLIES TO


 * Microsoft Visual SourceSafe 5.0 Standard Edition
 * Microsoft Visual SourceSafe 6.0 Standard Edition
 * Microsoft Visual Basic 5.0 Professional Edition
 * Microsoft Visual Basic 6.0 Professional Edition
 * Microsoft Visual Basic 5.0 Enterprise Edition
 * Microsoft Visual Basic 6.0 Enterprise Edition

-



This article was previously published under Q201565



SYMPTOMS
When compiling an ActiveX component, you might see the following error message:

Unexpected error occurred in code generator or linker. --View error messages?

If you click Yes, messages similar to the following might appear:

.OBJ : warning LNK4104: export of symbol"DllUnregisterServer" should be PRIVATE

.OBJ : warning LNK4104: export of symbol "DllGetClassObject" should be PRIVATE

.OBJ : warning LNK4104: export of symbol "DllRegisterServer" should be PRIVATE

.OBJ : warning LNK4104: export of symbol "DllCanUnloadNow" should be PRIVATE

Creating library  and object 

LINK : fatal error LNK1104: cannot open file ""

LINK : fatal error LNK1141: failure during build of exports file

NOTE: These warnings might vary or not appear at all.



CAUSE
The .exp and/or .lib files in the project directory are read-only.



RESOLUTION
Change the read-only attribute to read/write.



STATUS
This behavior is by design.



MORE INFORMATION
The Export file (.exp) and Import Library file (.lib) are created in a Visual Basic project directory when, for example, you compile a component project. These files are actually Visual C++ files. Their purpose is explained in greater detail in Visual C++ Help files.

One typical scenario in which these files might unexpectedly become read-only is if they are manually added to source control through the Visual SourceSafe Explorer. Unchecked out files in Visual SourceSafe are marked read-only. Microsoft recommends that you not place these types of files under source control. And, if you have such files currently under source control, you should remove them.

NOTE: This problem is not specific to Visual SourceSafe. Simply changing the file's attribute manually, or by any other process, to read-only would be sufficient to reproduce this behavior.

Steps to Reproduce Behavior

 * 1) Create an ActiveX DLL project and save it.
 * 2) Compile the project. (This step creates the .lib and .exp files.)
 * 3) Next, from project's compile directory in Windows Explorer, right-click either the .lib or .exp file and select Properties to change the file's attribute to read-only.
 * 4) Compile the project again to the same directory as used in Step 2.

