gpt4 book ai didi

c++ - 在同一项目中使用两个不同的数学库会使Visual C++困惑

转载 作者:行者123 更新时间:2023-12-02 10:19:59 25 4
gpt4 key购买 nike

我的项目需要同时使用Micorsoft Visual C++ math.h和Intel MKL math.h

使用详细信息进行构建,我得到:

1>  Note: including file:        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\cmath
1> Note: including file: E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h
1> Note: including file: C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\crtdefs.h
1> E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h(1577): warning C4005: 'HUGE_VALF' : macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h(104) : see previous definition of 'HUGE_VALF'
1> E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h(1579): warning C4005: 'HUGE_VALL' : macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h(105) : see previous definition of 'HUGE_VALL'
1> E:\3rdParty\MKL\2017.1.143\windows\compiler\include\math.h(1581): warning C4005: 'HUGE_VAL' : macro redefinition
1> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\../../vc/include/math.h(96) : see previous definition of 'HUGE_VAL'

“'HUGE_VALF':宏重新定义”消息使我感到怀疑。

起初,我只是禁用了该警告,但是考虑到此选项只会掩盖潜在的问题,我正在寻找替代解决方案。

从第1行和第2行,您可以看到Visual Studio的 cmath不像应有的那样包括Visual Studio的 math.h,但包含相同名称的MKL文件。

如何设置 CMakeLists.txt文件,以便编译器可以选择正确的包含文件?

最佳答案

只需包装一个库。

例如,创建头文件:

#pragma once

namespace imath {
double sin(double a);
}

在cpp中

#include "Wrapper.h"
#include <intel/math.h>

namespace imath {
double sin(double a) {
return ::sin(a);
}
}

对需要在通用源中使用的每个符号执行此操作。

并且不包括您正在使用C++的 Cmath.h版本,所以不包括 #include <cmath>

关于c++ - 在同一项目中使用两个不同的数学库会使Visual C++困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60657841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com