依赖的lib文件里调用的函数链接失败

saloyun 2015-03-30 04:12:13
使用的是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的链接错误呢?
...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
saloyun 2016-07-25
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
3Q,这个帖子忘记结了,不是lib的原因,可能当时头文件写的有问题,忘记怎么解决的了。
赵4老师 2015-03-30
  • 打赏
  • 举报
回复
项目、属性、链接器、常规、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项:填写附加依赖库的名字.lib 空格或分号间隔多项
saloyun 2015-03-30
  • 打赏
  • 举报
回复
难道是因为问题太简单不屑于回答么?
saloyun 2015-03-30
  • 打赏
  • 举报
回复
都木有人回答么?.........

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧