How can I get rid of the __imp__ prefix in the linker in VC++?

The __imp__ prefix appears whenever you are linking to a DLL. It does not appear when linking to statically linked libraries. Most likely the code is generated to be linked against a DLL import lib, but you have linked it with a static lib instead.

The prefix is added when you mark the imported function with __declspec(dllimport) - make sure your imports are not using this when not linking against a DLL.


You have to add CURL_STATICLIB to Preprocessor Definitions at the properties of your projects in MSVC


You are using a header file that defines the function prototype with the specifier evaluating to __declspec(dllimport)

You need to either redefine the statement that is evaluating to this (set it to nothing), or use a different header file altogether.

Typically you'll see code like this:

#ifdef FOO_EXPORTS
#define DLLSPEC __declspec(dllexport)
#else
#define DLLSPEC __declspec(dllimport)
#endif

...

DLLSPEC bool foo(int bar);

Compiling the project with FOO_EXPORTS defined will use one mode and without it will use the other.

Tags:

C++

Libcurl