我正在编译一个Fedora 8盒子上的Blender 3D建模程序from source(使用SCONS)的一个分支,并且遇到了一个错误,我没有遇到在CentOS 5盒子上编译同一个源文件,我我认为它与变量定义有关。错误是:“#pragma”命令中的变量“undeclared”?
source/blender/blenkernel/intern/implicit.c: In function ‘mul_bfmatrix_lfvector’:
source/blender/blenkernel/intern/implicit.c:592: error: ‘CLOTH_OPENMP_LIMIT’ undeclared (first use in this function)
source/blender/blenkernel/intern/implicit.c:592: error: (Each undeclared identifier is reported only once
source/blender/blenkernel/intern/implicit.c:592: error: for each function it appears in.)
source/blender/blenkernel/intern/implicit.c: In function ‘cloth_calc_force’:
source/blender/blenkernel/intern/implicit.c:1700: error: ‘CLOTH_OPENMP_LIMIT’ undeclared (first use in this function)
文件implicit.c
确实定义该变量;这里的文件的前几行:
#include "MEM_guardedalloc.h"
#include "BKE_cloth.h"
#include "DNA_object_force.h"
#include "BKE_effect.h"
#include "BKE_global.h"
#include "BKE_utildefines.h"
#include "BLI_threads.h"
#define CLOTH_OPENMP_LIMIT 25
#ifdef _WIN32
#include <windows.h>
static LARGE_INTEGER _itstart, _itend;
static LARGE_INTEGER ifreq;
被抛出一个错误的两行分别是:
#pragma omp parallel sections private(i) if(vcount > CLOTH_OPENMP_LIMIT)
和
#pragma omp parallel for private(i) if(numverts > CLOTH_OPENMP_LIMIT)
我猜的错误是由于编译器以及它在编译时如何处理该变量的定义,并且由于Fedora 8有点过时,它可能会有一些旧版本的编译器将其搞乱。任何人都有一个想法,我如何解决这个变量显示为“未声明”?
使用新编译器 – Anycorn 2010-07-20 19:32:04
使用gcc版本4.1.2 20070925(Red Hat 4.1.2-33);我需要走多少新的? – MidnightLightning 2010-07-20 19:43:27
很可能在您的编译器中,OpenMP实现不了解是否有条件。 尝试g ++ 4.4或更高版本。或者,如果条件 – Anycorn 2010-07-20 20:16:30