Search code examples
visual-c++linkerimport-libraries

How do I disable the generation of an import library?


I'm creating a COM DLL in Visual Studio. The linker generates an import library for the DLL. I don't need the import library.

Is there any way to tell the linker not to generate it?


Solution

  • Nine years later, this may not be useful to the OP, but it may prove useful to others coming by looking for a solution.

    LINK.EXE supports the /NOIMPLIB option that prevents creation of an import library, even in the presence of a __declspec(dllexport) routine in the DLL or EXE being linked.

    Go to Project Properties, open up the Linker section. The very last option is Command Line. Select that, and there's a place at the bottom to add additional options to the linker. Enter /NOIMPLIB in the edit field, save and apply, and it'll prevent the creation of the .lib file.

    -- Edit --

    Unfortunately, while it does prevent creation of the .lib file, empirically I've found that the .exp file is still created. I'd file a bug report with MS, but based on past experience with their developer tools team, trying to get something like this fixed will be akin to trying to roll a boulder up hill.

    -- Edit -- four years later --

    As noted in the comments, VS 2019 finally has this fixed, so that /NOIMPLIB now suppresses the creation of both the .lib and .exp files.