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?
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?
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."
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 theDLL
orEXE
being linked.Go to Project Properties, open up the
Linker
section. The very last option isCommand 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.