【发布时间】:2020-10-31 04:13:09
【问题描述】:
我正在尝试在我新安装的 Microsoft Visual Studio 2019 和 Intel Parallel Studio XE(随 MKL Library 2020 提供)中编译一个非常简单的 C++ 代码。基本上,该代码以 CSR 格式创建一个 3x3 稀疏标识矩阵句柄,然后销毁该句柄:
#include "mkl.h"
#include "mkl_spblas.h"
int main(void)
{
const MKL_INT n = 3;
MKL_INT ia[3] = {0, 1, 2},ja[3] = {0, 1, 2};
double a[3] = {1., 1., 1. };
sparse_matrix_t csrA;
mkl_sparse_d_create_csr(&csrA, SPARSE_INDEX_BASE_ZERO, n, n, ia, ia + 1, ja, a);
mkl_sparse_destroy(csrA);
return;
}
我做了this link(以及this link)描述的配置项目(除了第6步,因为我在Visual Studio中找不到“自定义构建设置”,所以我在“自定义构建步骤”)。
我使用Intel Math Kernel Library Link Line Advisor 配置包含目录和库目录(我选择了 MS C\C++ 编译器、Intel(R)64 架构、动态链接、32 位整数接口和顺序线程层)。
感谢@john,我设法取得了一些小的进展。但我仍然收到此错误:
Error MSB3073 The command "mkl_link_tool.exe -libs -c ms_c -a intel64 -i ilp64 -p no 2> NUL" exited with code 9009. ConsoleApplication1 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\Platforms\x64\PlatformToolsets\v142\ImportBefore\Intel.Libs.MKL.v142.targets 64
我之前在 linux 系统下成功地运行了一些调用 MKL 库的代码,但我对 MSVS(以及 MKL)还是很陌生,所以我真的很感激任何帮助。我在 Internet 上阅读了一些类似的主题(例如,this post),但仍然无法完成工作。
【问题讨论】:
-
设备:戴尔 XPS 13-7390;操作系统:Windows 10 专业版,版本 1909; Intel Parallel Studio XE:集群版,2020更新1(不知道哪里可以下载学生许可下的免费作曲家版); Microsoft Visual Studio:社区 2019,版本 16.6.3
-
这两个警告似乎都是相关的。我不能说第一个是什么意思,但第二个意味着 MKL 是一个 64 位库,但您正在尝试构建一个 32 位程序。这永远行不通。
-
@john 感谢您的回复。我注意到了,但即使我在 MKL Link Line Advisor 中选择了 64 位整数,我仍然会收到相同的警告。
-
问题不是MKL,问题是Visual Studio。您需要确保为您的构建选择 x64 平台。
-
[compiler-construction] 是针对关于编写编译器的问题,而不是使用它们。 (另外,我不相信您使用的是 [gcc],如果这是真的,那么该标签也具有误导性。)
标签: c++ visual-studio visual-studio-2010