静态库头文件(c语言):
1 #ifdef __cplusplus 2 extern "C" { 3 #endif 4 5 __declspec(dllexport) int __c(void); 6 7 #ifdef __cplusplus 8 } 9 #endif
在c++代码中引用:
extern "C" __declspec(dllimport) int __c(void);
int _tmain(int argc, _TCHAR* argv[]) { _tprintf(_T("%d....\n"), __c()); return 0; }
error LNK2019: 无法解析的外部符号 __imp___c,该符号在函数 main 中被引用
extern "C" int __c(void); int _tmain(int argc, _TCHAR* argv[]) { _tprintf(_T("%d....\n"), __c()); return 0; }
去掉 __declspec(dllimport) 或者使用__declspec(dllexport)后就可以了。
因为静态库的头文件中没有定义__declspec(dllimport)
,参考 从static变量导出问题解析 __declspec(dllexport) 和 __declspec(dllimport)的作用