依赖的lib文件里调用的函数链接失败
使用的是vs2008编译器,打了sp1的补丁;
包含3个工程,CaTest 测试工程(exe)
sm2Crypt (第三方库),静态lib,有这个库的所有源码,包括依赖的代码;
SM2Tools(自己封装的库),这个要做成Dll,依赖sm2Crypt这个库;
sm2Crypt这个库使用vs2008编译时没有问题,但是在SM2Tools编译的时候报
错误 1 error LNK2001: 无法解析的外部符号 "int __cdecl ecurve_mult(struct bigtype *,struct epoint *,struct epoint *)" (?ecurve_mult@@YAHPAUbigtype@@PAUepoint@@1@Z) sm2Crypt.lib
这个链接错误,实际上ecurve_mult这个函数,只在sm2Crypt.lib被调用,在SM2GenKey函数中被调用
long __stdcall SM2GenKey(unsigned char* pu1PriKeyD, unsigned char* pu1PubKeyQx, unsigned char* pu1PubKeyQy)
因为是静态链接也就不存在导不导出的问题,ecurve_mult这个函数在miracl.h中声明,在mrcurve.c实现的,sm2Crypt工程中包含了mrcurve.c文件,是源码链接的;
为什么在SM2Tools工程中会报sm2Crypt.lib的链接错误呢?