0

尝试在 Windows 上使用 pip 为 Python 安装 cxvopt 包时,我收到以下错误消息:

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 中。)

4

2 回答 2

0

Visual Studio 14.0 有一个可怜的 ANSI C89 编译器,它甚至不支持此代码所需过时ISO C99 标准。我猜你要NO_ANSI99_COMPLEX为编译成功定义宏;如果定义了此宏,则代码将跳过 C99 特定的构造。

我相信这个宏是在您在另一台计算机上成功编译代码时定义的?

于 2017-02-23T21:49:29.897 回答
0

cvxopt 在 3.4 之后的 python 版本的 Windows 上不受支持,由于其他答案中概述的原因,我无法构建它。我正在使用 conda,我为 python 3.4 创建了一个单独的环境,并使用 pip 安装了 cvxopt,它运行良好,因为该版本的 Python 有预构建的二进制文件。我还为 VS14 安装了 Visual Studio cpp 构建工具

(在以管理员身份运行的 conda 命令提示符下)

//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
于 2017-07-24T01:21:13.207 回答