【发布时间】:2019-07-13 00:01:14
【问题描述】:
我正在尝试使用 MKL 离散傅里叶变换函数,我已经安装了带有 Microsoft Visual Studio 的 Intel Parallel Studio XE,我已经使用这个设置有一段时间了,现在没有问题。我经常使用 MKL VSL 库来生成并行数,它们工作得很好。我通过简单地运行basic_dp_real_dft_3d.f90 代码来测试它,该代码在我的 mkl 文件夹中的mkl/examples/examples_core_f/ 下提供。我只是将这段代码复制到一个新的 Visual Studio 项目中(我通常会使用 Fortran 控制台应用程序)并在开头添加
include `mkl_dfti.f90`
我已验证此文件确实存在于mkl/include/ 文件夹中,并且当我编译代码时,模块文件实际上已编译并显示在我项目的Debug/ 文件夹中。但是,我得到了错误
Severity Code Description
Error error LNK2019: unresolved external symbol _dfti_set_value_intval referenced in function _MAIN__
Error error LNK2019: unresolved external symbol _dfti_compute_forward_dz referenced in function _MAIN__
Error error LNK2019: unresolved external symbol _dfti_compute_backward_zd referenced in function _MAIN__
Error error LNK2019: unresolved external symbol _dfti_create_descriptor_highd referenced in function _MAIN__
Error error LNK2019: unresolved external symbol _dfti_set_value_intvec referenced in function _MAIN__
Error error LNK2019: unresolved external symbol _dfti_commit_descriptor_external referenced in function _MAIN__
所有这些函数都在mkl_dfti.f90 模块中定义。有什么我想念的吗?我确保在项目属性中启用了 MKL 库。当我使用 VSL 库时,这通常就足够了,所以我现在不知道问题出在哪里。
【问题讨论】:
-
这是一个链接器错误,而不是编译器错误。您必须链接正确的库。英特尔有一个不错的 MKL Link Advosor,使用它。我相信这个 wss 之前已经讨论过好几次了。
标签: visual-studio fortran intel intel-fortran intel-mkl