HYPRE与VS 2015

时间:2016-10-20 14:42:36

标签: c++ c windows visual-studio-2015 compiler-errors

我安装了VS 2015 Professional。我安装了最新的HYPRE,来自Lawrence Livermore website。然后我使用CMake配置它并继续构建,我开始得到BLAS(dnrm2.c)构建错误:

2>         dnrm2.c
2>     1>
C:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\math.h(454): error C2059: syntax error: '('

触发dnrm2.c错误的代码行是:

#include "math.h"

指向文件:

c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\math.h

我查找了这个错误并找到了一些建议,比如this,将include更改为:

#include <cmath>

并编辑HYPRE项目设置:Configuration > C/C++ > Advanced > Compile AsCompile As C++ (/TP)

我做了,但我仍然看到同样的错误,因为显然math.h的{​​{1}}包含了相同的标题路径:

cmath

我甚至尝试重新安装VS 2015而没有任何运气(相同的错误)。感谢关于这里发生了什么的任何想法,以及如何解决这个问题。我想我可以在VS 2015中尝试一个极简主义的例子,其中包括math.h并报告,如果这有帮助的话。

修改 我的极简主义例子:

#else /* _STD_USING */
 #include <math.h>
#endif /* _STD_USING */

似乎正在建设中。我试图以与C编译相同的方式设置项目(或C ++,没关系)。但这并不能帮助我。

3 个答案:

答案 0 :(得分:0)

好的,这里的问题是HYPRE来源看起来像。在包含f2c.h

之前,他们已将此文件包含在math.h文件中
//#undef abs
//#define abs(x) ((x) >= 0 ? (x) : -(x))
//#endif

当我评论它时(因为这已在标准中定义),然后它超过了构建错误。当然我遇到其他构建错误。我试图单独解决这些问题。

编辑:它并不那么简单,因为他们(HYPRE)实际上依赖于他们自己对abs的定义。所以我撤消了上面的内容并更改了一些包含的顺序,以便undef实际上有意义。无论哪种方式,这都是HYPRE源代码问题。

答案 1 :(得分:0)

如果您在VS2015上成功编译了HYPRE,您能否将VS2015程序发送给我! 我的专业是地球物理学建模和反演。 我的电子邮件是schoolhui@hotmail.com 非常感谢你!

答案 2 :(得分:0)

我刚评论过

c:\Program Files (x86)\Windows Kits\10\Include\10.0.10240.0\ucrt\math.h

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- The main content view -->

    <LinearLayout
        android:id="@+id/llContent"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    <!-- The navigation drawer -->
    <!-- Menu items--->
    <android.support.design.widget.NavigationView
    android:id="@+id/navigation_view"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="right"
    android:background="@drawable/background_drawer"
    app:headerLayout="@layout/nav_header"
    app:itemIconTint="@color/colorPrimary"
    app:menu="@menu/menu_navigation" />

</android.support.v4.widget.DrawerLayout>

然后HYPRE成功编译!

然后,我已经取消注释&#34; abs&#34;。