How do I disable the generation of an import library?

2.6k views Asked by At

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?

2

There are 2 answers

2
dgnuff On BEST ANSWER

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.

1
Russ Freeman On

This answer seems to be the solution: https://stackoverflow.com/a/15214141/660440

"Using a .def file containing your exported functions marked with the PRIVATE keyword will tell the linker to skip placing the symbol in your import library."