【发布时间】:2011-12-02 12:19:52
【问题描述】:
昨天帮朋友编译Intel's MKLJava 例子。尽管一切看起来都很好(根据示例文件/makefile),但我们遇到了“未解决的外部”问题。
然后我使用 Visual Studio 的 dumpbin 检查库中是否存在未解析的函数。未解析外部的一个示例是名为_cblas_sgemm 的函数。从库 (dumpbin /symbols mkl_core.lib) 中转储符号时,我只能在库中找到一个函数 cblas_sgemm,它错过了前缀 _。然后我发现这个函数实际上只被称为 cblas_sgemm,并且编译器添加了 _ 前缀,作为名称修改规则的一部分。
TL;DR
所以,我的问题是:
-
dumpbin是否显示库中入口点的全名?或者由于某种原因,它实际上“解构”了名称? - 这个库是自带安装包的,所以不知道是用哪个编译器编译的。不同的编译器会产生不同的名称吗?
我真的不认为我做对了;我可能在其他地方做错了什么,但我想确定这两个问题。
没有答案的类似问题是here。
【问题讨论】:
-
听起来你正在尝试链接 Fortran 版本。
-
@HansPassant,你能详细说明一下吗...?
标签: c++ visual-c++ linker intel-mkl