昨天我在帮朋友编译英特尔的 MKL Java 示例。尽管一切看起来都很好(根据示例文件/makefile),但我们遇到了“未解决的外部”问题。
然后我使用 Visual Studio 的dumpbin检查库中是否存在未解析的函数。未解析外部的一个示例是一个名为_cblas_sgemm
. 当从库 ( dumpbin /symbols mkl_core.lib
) 中转储符号时,我只能cblas_sgemm
在库中找到一个函数,它错过了前缀_
。然后我发现该函数实际上只被称为 cblas_sgemm,并且编译器添加了_
前缀,作为名称修改规则的一部分。
TL;博士
所以,我的问题是:
- 是否
dumpbin
显示库中入口点的全名?或者由于某种原因它实际上“解开”了这个名字? - 这个库是自带安装包的,所以不知道是用哪个编译器编译的。不同的编译器会产生不同的名称吗?
我真的不认为我做对了。我可能在其他地方做错了什么,但我想确定这两个问题。
这里有一个没有答案的类似问题。