3

在 pymatbridge 的 0.3 版本中,为 ZMQ 添加了额外的依赖项。要安装此版本,您可能需要编译一个messenger链接到 zeromq 的 dll 的 mex 扩展。然而,在某些情况下,这被证明是相当困难的。

有没有人有在运行 Windows 的机器上从源代码安装 pymatbridge 的成功案例?

4

3 回答 3

4

这是我的设置和构建说明;为冗长道歉——这是我为我的实验室笔记本写的一篇文章。

规格:

Windows 8.1 (64 bit)
Anaconda 1.9.1
python 2.7.6
MinGW
TDM GCC 4.8.1

首先我安装了MS Visual C++ & SDK 7.1. 安装早期失败的可能原因是存在其他 Visual C++ 编译器版本和/或 SDK——在成功安装 SDK 7.1 之前,我必须卸载其中的一些。

首先,使用Windows SDK 7.1 Command Prompt,我

mex -setup

并选择新安装的编译器。就我而言

Select a compiler:
[1] Microsoft Software Development Kit (SDK) 7.1 in 
C:\Program Files (x86)\Microsoft Visual Studio 10.0

[0] None

Compiler:

我选择了号码1。接下来,我下载并安装了一个预构建的 64 位ZMQ 3.2.4,并从 ZMQ 3.2.4 安装位置C:\Program Files\ZeroMQ 3.2.4\lib复制了libzmq-v90-mt_3_2_4.lib,然后libzmq-v90-mt_3_2_4.dllC:\Program Files\ZeroMQ 3.2.4\binMessenger 构建目录中复制了~\python-matlab-bridge\messenger\src. 我也将zmq.hzmq_utils.h放入该目录,但到目前为止我不确定它们是否真的有必要。

然后,在 中Windows SDK 7.1 Command Prompt,我进入messenger\src目录并发出

mex messenger.c libzmq-v90-mt-3_2_4.lib -O -output messenger

获得一个messenger.mexw64. 最后,在~\python-matlab-bridge directory, using 中MinGW,我只是

python setup.py install

这会自动将构建的包Anaconda\Lib\site-packages与鸡蛋信息一起放入我的。Anaconda\Lib\site-packages\pymatbridge\matlab那里是messenger.mexw64较早构建的 -从~\python-matlab-bridge\messenger\src. 我还复制到Anaconda\Lib\site-packages\pymatbridge\matlab所有其他.dll的 s, .libs 和.hs 以取得良好的效果。现在在iPython 2.7 console或 iPython Notebook 中,我可以

%load_ext pymatbridge

成功地。

于 2014-05-18T21:44:09.777 回答
3

当我使用 Visual Studio 作为我的标准 IDE 时,我摆弄了一下,得到了一个有效的构建过程。我用了:

VS 2013
Matlab 2013b x64
Python 3.3 x64
ZeroMQ 4.0.4.

如果您使用不同的版本,请确保在必要时调整路径。

messenger使用 Visual Studio (2013)构建

  • 首先用一个空的 C++ 项目创建一个新的解决方案。
  • 设置配置,例如 x64 Release
  • 打开项目属性并设置以下内容:

配置属性 -> 常规:

目标名称:使者

目标扩展名:.mexw64

配置类型:动态库 (.dll)

配置属性 -> VC++ 目录 -> 包含目录:

MATLABPATH \extern\include

ZEROMQ 路径\包括

配置属性 -> VC++ 目录 -> 库目录:

MATLABPATH \extern\lib\win64\microsoft

ZEROMQ 路径\lib

配置属性 -> 链接器 -> 输入 -> 附加依赖项:

libmx.lib;libmex.lib;libmat.lib; libzmq-v120-mt-4_0_4.dll

配置属性 -> 链接器 -> 命令行 -> 附加选项:

/export:mex函数

  • 添加messenger.c为源文件
  • 建立图书馆
  • 将其复制到:PYTHONPATH \Lib\site-packages\pymatbridge\matlab\

请注意:

由于 windows.h 中已经存在的函数名称,我得到了一些不兼容的错误。解决方案是重命名:

  • 初始化
  • 回应
  • 清理

到:

  • 初始化垫
  • 听垫
  • 响应垫
  • 清理垫
于 2014-07-21T12:42:38.180 回答
1

其他一些答案有点过时了,现在可以更容易地做到这一点(在 Linux 系统上仍然不会那么容易:/)。首先,pymatbridge 现在在 Windows 上包含一个二进制 mex,它静态链接到 libzmq,所以你实际上不需要编译任何东西来让它工作。

但是,如果您仍然想从源代码编译它,那么对于动态链接库来说,这个过程还不错。

1) 从网站安装 zeromq:http://zeromq.org/distro:microsoft- windows

2)将ZeroMQ安装目录下的lib/libzmq-*.lib文件之一重命名为libzmq.lib

3) 将 ZeroMQ bin 目录添加到您的路径中。

4) 编辑 messenger 中的 messenger/mexw64/local.cfg 文件以指向 zeromq 安装目录(您需要同时更新 ZMQ_INC 和 ZMQ_LIB)。还要确保 MATLAB 目录正确。

5)make.py matlab在messenger目录下运行。这应该构建 messenger.mexw64

静态链接库在实践中很简单,但由于 zeromq(截至目前)不提供用于与 Windows 安装程序进行静态链接的 .lib,您需要自己编译。拥有静态 .lib 后,构建 messenger.mexw64make matlab --static

于 2015-03-10T18:32:57.197 回答