visual studio 中链接静态库, 出现找不到 __imp_函数名 的错误, extern "C"也增加了
Logically, the next question to ask is how to get the optimized form. The answer comes in the form of a hint you give to the compiler. The __declspec(dllimport) function modifier tells the compiler that the function resides in another DLL and that the compiler should generate this instruction
CALL DWORD PTR [XXXXXXXX]
rather than this one:
In addition, the compiler emits information telling the linker to resolve the function pointer portion of the instruction to a symbol named __imp_functionname. For instance, if you were calling MyFunction, the symbol name would be __imp_MyFunction. Looking in an import library, you'll see that in addition to the regular symbol name, there's also a symbol with the __imp__ prefix on it. This __imp__ symbol resolves directly to the IAT entry, rather than to the JMP stub.
链接的时候函数名会加上__imp_前缀，所以如果链接静态库， 函数的声明不用增加__declspec(dllimport) 。如果链接动态库，再增加__declspec(dllimport)。