我对 C++ 比较陌生(我主要有 C# 背景)。我已经获得了一些要从 Windows 移植到 Linux 的代码,但是虽然我可以让 Visual Studio 2010 编译它(使用 Intel C++ 编译器),但我无法让它在 linux 中与 gcc 一起工作,或 Intel C++ Linux 编译器(都给出相同的错误)。我不认为这是一个不起作用的英特尔特定功能,这就是为什么我在这里而不是在英特尔论坛上提问的原因。
我试图编译的文件 DoubleMatrixOperations.cpp 是:
#include <ipp.h>
#include <mkl.h>
extern "C"
{
void Multiply_mdvd_vd(int rows, int cols, double* vout, double* m, double* v, bool transpose)
{
cblas_dgemv(
CBLAS_ORDER::CblasRowMajor,
transpose ? CBLAS_TRANSPOSE::CblasTrans : CBLAS_TRANSPOSE::CblasNoTrans,
rows, cols, 1.0, m, cols, v, 1, 0.0, vout, 1);
}
}
编译器的输出是:
$ gcc DoubleMatrixOperations.cpp -I$IPPROOT/include
DoubleMatrixOperations.cpp: In function âvoid Multiply_mdvd_vd(int, int, double*, double*, double*, bool)â:
DoubleMatrixOperations.cpp:9:4: error: âCBLAS_ORDERâ is not a class or namespace
DoubleMatrixOperations.cpp:10:16: error: âCBLAS_TRANSPOSEâ is not a class or namespace
DoubleMatrixOperations.cpp:10:46: error: âCBLAS_TRANSPOSEâ is not a class or namespace
如果这是一个愚蠢的问题,请提前道歉!
谢谢,托马斯