【问题标题】:MKL DFT Unresolved External Symbol despite proper INCLUDE file尽管包含正确的 INCLUDE 文件,但 MKL DFT 未解析的外部符号
【发布时间】: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


【解决方案1】:

问题是我在项目属性中为Release 编译启用了MKL 链接,但没有为Debug 编译启用。这些可以通过左上角名为Configuration 的下拉菜单进行更改。

【讨论】:

    猜你喜欢
    • 2013-07-25
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2011-02-09
    相关资源
    最近更新 更多