在 pymatbridge 的 0.3 版本中,为 ZMQ 添加了额外的依赖项。要安装此版本,您可能需要编译一个messenger
链接到 zeromq 的 dll 的 mex 扩展。然而,在某些情况下,这被证明是相当困难的。
有没有人有在运行 Windows 的机器上从源代码安装 pymatbridge 的成功案例?
在 pymatbridge 的 0.3 版本中,为 ZMQ 添加了额外的依赖项。要安装此版本,您可能需要编译一个messenger
链接到 zeromq 的 dll 的 mex 扩展。然而,在某些情况下,这被证明是相当困难的。
有没有人有在运行 Windows 的机器上从源代码安装 pymatbridge 的成功案例?
这是我的设置和构建说明;为冗长道歉——这是我为我的实验室笔记本写的一篇文章。
规格:
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.dll
从C:\Program Files\ZeroMQ 3.2.4\bin
Messenger 构建目录中复制了~\python-matlab-bridge\messenger\src
. 我也将zmq.h
其zmq_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, .lib
s 和.h
s 以取得良好的效果。现在在iPython 2.7 console
或 iPython Notebook 中,我可以
%load_ext pymatbridge
成功地。
当我使用 Visual Studio 作为我的标准 IDE 时,我摆弄了一下,得到了一个有效的构建过程。我用了:
VS 2013
Matlab 2013b x64
Python 3.3 x64
ZeroMQ 4.0.4.
如果您使用不同的版本,请确保在必要时调整路径。
messenger
使用 Visual Studio (2013)构建配置属性 -> 常规:
目标名称:使者
目标扩展名:.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
为源文件请注意:
由于 windows.h 中已经存在的函数名称,我得到了一些不兼容的错误。解决方案是重命名:
到:
其他一些答案有点过时了,现在可以更容易地做到这一点(在 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