2017-02-23 23 views
0

当试图安装cxvopt包的Python,使用Windows点子,我收到以下错误信息:CVXOPT安装失败,在复杂的类型声明文件misc.h

misc.h(35): error C2146: syntax error: missing ';' before identifier 'z' 
misc.h(35): error C2061: syntax error: identifier 'z' 
misc.h(36): error C2059: syntax error: '}' 

...等等。

错误发生在如下图所示,在复杂的变量声明文件misc.h(在base.c参考):

#ifndef NO_ANSI99_COMPLEX 
typedef union { 
    double d; 
    int_t i; 
    double complex z; 
} number; 
#endif 

这并不是我使用另一台计算机上发生。根据需要安装了Visual Studio 14.0。

任何看过这个问题的人都可以提出解决方案吗? (我的第一个想法是包含“complex.h”,但是在cvxopt.h中引用了它,它包含在misc.h之前的base.c中)。

+0

什么是'int_t'? – Olaf

回答

0

Visual Studio 14.0有一个可怜的ANSI C89编译器,它甚至不支持the obsolete ISO C99 standard that this code requires。我想你是为了编译成功而定义宏NO_ANSI99_COMPLEX;如果定义了这个宏,代码会跳过C99特定的结构。

我相信这个宏是在成功编译其他计算机上的代码时定义的?

0

cvxopt在3.4版以后的python版本的windows上不支持,我无法根据其他答案中列出的原因构建它。我正在使用conda,并且为python 3.4创建了一个独立的环境,并使用pip安装了cvxopt,并且它工作正常,因为该版本的Python有预构建的二进制文件。我也得到了安装VS14

Visual Studio的CPP构建工具(在畅达命令提示符以管理员身份运行)

//Setup vcvars using batch file change to whatever path and version of vcvars is correct for you 
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" 
//setup new environment using python 3.4 
conda create -n py34 python=3.4.5 anaconda 
//switch to new environment 
activate py34 
//install cvxopt 
pip install cvxopt