昨天我帮朋友编译Intel's MKL Java示例。我们遇到了“未解决的外部事件”问题,尽管一切都很顺利(相应于示例文件/ makefile)。名称mangling和dumpbin
然后,我使用Visual Studio的dumpbin来检查库中是否存在未解析函数。一个无法解析的外部例子是一个叫做_cblas_sgemm
的函数。当从库中转储符号(dumpbin /symbols mkl_core.lib
)时,我只能在库上找到一个函数cblas_sgemm
,它错过了前缀_
。然后我发现这个函数实际上只叫做cblas_sgemm,并且编译器添加了前缀_
,作为名称修改规则的一部分。
TL; DR
所以,我的问题是:
- 是否
dumpbin
显示在库的入口点的全名?或者出于某种原因,它实际上“取消了”这个名字? - 该库附带安装包,所以我不知道使用哪个编译器进行编译。不同的编译器会生成不同的名称吗?
我真的不觉得我说得对;我可能在其他地方做错了什么,但我想确定这两个问题。
一个类似的问题没有答案是here。
听起来你想链接Fortran版本。 –
@HansPassant,你能详细说说...吗? –