- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
机器配置:我的配置是 windows 7 x64,安装了 python 2.7 和 cython 0.18(所有 64 位)。我还安装了 MS C++ 2008 Visual Studio。
我有 GSL 二进制文件并且 Path 指向 GSL\Bin。
我正在使用 MS VS 2008 + SDK 7.0 编译 cython .pyx 文件。我使用 SDK 7.0 命令提示编译为 c 和 cython。
问题但是在编译时我收到一个链接错误 2019,这表明找不到 GSL 文件夹中的头文件。
我的尝试为了解决这个问题,我下载了 CythonGSL。使用“来自 cythonGSL cimport *”没有用。我转到这个包的 init 文件并更改了它似乎正在搜索的目录以适合我安装 GSL 的位置。我已经更新了 setup.py,如 CythonGSL 自述文件中所示。
这也没有用!!在编译时,它说找不到 gsl.lib。
知道如何解决这个问题吗?
一个选项是,如果我可以指向一个静态地址,例如,代替
cdef extern from "libcalg/queue.h":
with
cdef extern from "FUll File Path/queue.h":
这暂时不起作用。
设置.py
from distutils.core import setup
from Cython.Distutils import Extension
from Cython.Distutils import build_ext
import cython_gsl
import numpy as np
setup(
include_dirs = [cython_gsl.get_include(), np.get_include()],
cmdclass = {'build_ext': build_ext},
ext_modules = [Extension("lda_gibbs_cython",
["lda_gibbs_cython.pyx"],
libraries=cython_gsl.get_libraries(),
library_dirs=[cython_gsl.get_library_dir()],
include_dirs=[cython_gsl.get_cython_include_dir()])]
)
唯一的区别是我包含了 np.get_include()
我的 .pyx 文件:(从 https://github.com/twiecki/CythonGSL/blob/master/examples/gibbs.pyx 借来用于测试)
import numpy as np
cimport numpy as np
cimport cython
DTYPE = np.int
ctypedef np.int_t DTYPE_t
from scipy.special import gammaln
from cython_gsl cimport *
cdef gsl_rng *r = gsl_rng_alloc(gsl_rng_mt19937)
Cython GSL 尝试的错误消息:
D:\LDA\pythonLDA>setup.py build_ext --inplace
running build_ext
cythoning lda_gibbs_cython.pyx to lda_gibbs_cython.c
building 'lda_gibbs_cython' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\cl.exe /c /nolog
o /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python27\lib\site-packages -IC:/GSL/include -IC
:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include -IC:\Pytho
n27\PC /Tclda_gibbs_cython.c /Fobuild\temp.win-amd64-2.7\Release\lda_gibbs_cytho
n.obj
lda_gibbs_cython.c
c:\python27\lib\site-packages\numpy\core\include\numpy\npy_deprecated_api.h(8) :
Warning Msg: Using deprecated NumPy API, disable it by #defining NPY_NO_DEPRECA
TED_API NPY_1_7_API_VERSION
lda_gibbs_cython.c(2812) : warning C4244: 'function' : conversion from '__int64'
to 'long', possible loss of data
lda_gibbs_cython.c(4811) : warning C4101: 'getbuffer_cobj' : unreferenced local
variable
lda_gibbs_cython.c(4842) : warning C4101: 'releasebuffer_cobj' : unreferenced lo
cal variable
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\link.exe /DLL /n
ologo /INCREMENTAL:NO /LIBPATH:C:/GSL/lib /LIBPATH:C:\Python27\libs /LIBPATH:C:\
Python27\PCbuild\amd64 gsl.lib gslcblas.lib /EXPORT:initlda_gibbs_cython build\t
emp.win-amd64-2.7\Release\lda_gibbs_cython.obj /OUT:D:\LDA\pythonLDA\lda_
gibbs_cython.pyd /IMPLIB:build\temp.win-amd64-2.7\Release\lda_gibbs_cython.lib /
MANIFESTFILE:build\temp.win-amd64-2.7\Release\lda_gibbs_cython.pyd.manifest /MAN
IFEST
LINK : fatal error LNK1181: cannot open input file 'gsl.lib'
error: command 'link.exe' failed with exit status 1181
GCC 尝试
我安装了 TDM-GCC,所以我可以使用标准的 cmd 窗口:
.pyx 和 setup.py 保持不变。我在此处记录并解决了一个问题 -mno-cygwin : gcc building Mercurial (Windows 2000) .仍然没有雪茄。我不知道这是否应该是一个单独的问题 - 如果专家这么认为,将会提出。
D:\LDA\pythonLDA>setup.py build_ext --inplace -c mingw32
running build_ext
skipping 'lda_gibbs_cython.c' Cython extension (up-to-date)
building 'lda_gibbs_cython' extension
C:\MinGW64\bin\gcc.exe -mdll -O -Wall -IC:\Python27\lib\site-packages -IC:/GSL/i
nclude -IC:\Python27\lib\site-packages\numpy\core\include -IC:\Python27\include
-IC:\Python27\PC -c lda_gibbs_cython.c -o build\temp.win-amd64-2.7\Release\lda_g
ibbs_cython.o
writing build\temp.win-amd64-2.7\Release\lda_gibbs_cython.def
C:\MinGW64\bin\gcc.exe -shared -s build\temp.win-amd64-2.7\Release\lda_gibbs_cyt
hon.o build\temp.win-amd64-2.7\Release\lda_gibbs_cython.def -LC:/GSL/lib -LC:\Py
thon27\libs -LC:\Python27\PCbuild\amd64 -lgsl -lgslcblas -lpython27 -l -o D:\LDA\pythonLDA\lda_gibbs_cython.pyd
gcc: error: D:\LDA\pythonLDA\lda_gibbs_cython.pyd: No such file or direct
ory
error: command 'gcc' failed with exit status 1
最佳答案
我只使用了 CythonGSL
- 当前版本 ( https://github.com/twiecki/CythonGSL/blob/master/cython_gsl/__init__.py ) 读取环境变量 LIB_GSL
来确定 GSL
目录的位置。确保你有 LIB_GSL
环境变量来指向你的主 GSL
文件夹(不是 \bin
文件夹)。例如,LIB_GSL=C:/GSL
。然后您必须将 C:\GSL\bin
添加到您的 PATH
。我有一个 blog post有详细的解释。
聊天讨论中的更多解释: TDM-GCC
+ EPD
+ GSL
(稍作改动 - GSL 文件必须位于 C:\Program Files\GnuWin32\
。这非常适合 64 位 Windows 7。
使用可能在 MS VS C++ 2008 上编译的 Windows 二进制文件可能会导致与 mingw64
编译的 C++ 程序发生冲突。
设置的更多说明(已添加)
一般来说,使用像Python(x,y)这样的科学python发行版要容易得多。 (免费),Enthought Canopy (EPD 的继任者,有限免费版),或 Anaconda (除了高级包之外免费)而不是在 vanilla python 之上安装单独的包。似乎所有三个发行版都带有 MinGW,所以如果您不需要对 Cython 的 openmp 支持,您应该很好,如果需要,您可以安装 TDM-GCC .
就GSL
而言,您可以从oscats下载二进制GSL
项目。它具有带有开发 header 的 32 位和 64 位二进制文件。
我的设置是 Anaconda
+ TDM-GCC
+ GSL
(来自 oscats 项目)并且运行良好。
关于python - CythonGSL/通过 Cython 在 Windows 上使用 GSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15910259/
我正在编写一些代码,其中使用了一些 GNU GSL 函数。 出于纯粹的兴趣,我想知道这些功能是如何实现的,因此我想看看源代码。 问题是我似乎无法找到它所在的目录。 我知道我可以在“/usr/local
我需要计算 ∫ [x₁ to x₂] 1/√(1-k² sinh²(x)) dx 在我的程序中。这可以使用在复数参数中评估的第一类不完全椭圆积分来表示: -i (F(ix₂ | -k²) - F(ix
brew install gsl - 没问题 快速制作一个使用 gsl 的 Mac 应用程序,以检查它是否正常工作。 ( Handy example here. ) - 没问题 它们在/include
给定以下函数,采用:只读 float 跨度(动态或任何静态大小): template void foobar(gsl::span x); 假设我有一个 vector .将其作为参数传递是行不通的,但
C++ Core Guidelines促进实践using span . 问题在于 const 和可变范围。这是我尝试做的: auto foo(gsl::span); // 1st au
我正在尝试获取一个名为 emergent 的软件在职的。它依赖于我已经安装的 qt 和 coin。 但是当我尝试运行 emergent 时,出现以下错误: dyld: Library not load
假设我有一个成员变量std::vector在一个类中,我想使用 gsl::array_view 的组合从成员函数返回它作为不可变 View 和 gsl::cstring_view .不幸的是,以下内容
我正在尝试计算两个 vector a 和 b 之间的马氏距离。最终,我将使用它作为统计算法中的距离度量。我正在使用 gsl 来实现它们。马氏距离的公式是 sqrt((a-b)'c^-1(a-b)),其
我正在将指南支持库检查器集成到我的项目中。 Microsoft.CppCoreCheck Microsoft.Gsl 当我运行它时,我从包含的库(如标准库、glm、boost 等)中收到一堆错误。 一
我记得读过 mat4x3 比 mat3x4 使用了更多的寄存器,因为它有四列,即使它们具有相同数量的元素。我似乎无法在任何地方找到它了。新规范是否对两种类型的矩阵使用相同数量的统一寄存器? 转置是否也
我想使用 GSL 的统一随机数生成器。在他们的网站上,他们包含以下示例代码: #include #include int main (void) { const gsl_rng_t
我最近安装了 GSL,用于我的计算作业。我从预构建的库安装了它,并将其链接到 CodeBlocks,然后运行 GSL(贝塞尔函数)的测试示例以确保它有效。一切都很顺利。 然后我尝试了这里给出的线性
我现在正在与 GSL 合作。我在寻找特征值时遇到一些问题。在对称矩阵的情况下,GSL 似乎没有正确给出特征值。我给出了某些对称矩阵的输入,这些矩阵的特征值应该为 0,但是,GSL 函数返回非零特征值来
构建后: $ gcc generator.c -lm -lgsl -lgslcblas -lm 代码: #include #include gsl_rng * r; /* global gene
我正在使用 GSL 进行大量三次样条插值。假设我有三个自变量 a、b 和 c,所有变量都在相同的物理数据点上制表(可能是同一组位置)以米、英尺和英里为单位),以及两个因变量 y 和 z,在相同点处制表
我目前正在尝试在另一个自己编写的库(Quaternion.c)中使用我之前编写的库(matrix.c),方法是使用使用“matrix.h”的标准方法通过头文件调用它”包含“matrix.c”文件中的函
我正在尝试更新旧代码,该代码使用的是具有已弃用函数的 GSL 版本,但我在寻找如何使用新版本的归一化勒让德多项式函数时遇到了麻烦。这是总结问题的片段: #include #include #inc
我正在使用 GSL 示例页面上的代码来尝试求解一个包含四个微分方程的系统。我一直在努力将五个参数传递给 ODE 系统,并且遇到了一个最终的(我希望!)编译时错误。下面是一个片段,给我错误 114:57
我已经在 Kubuntu 14.04 中安装了最新版本的 GSL (1.16)。我使用库附带的文件 INSTALL(逐步)进行安装。我配置了 eclipse-cdt 环境以供使用。它工作,我认为,因为
我有一个非常简单的问题——我只想在 C 语言的 gsl 中将两个具有复杂条目的矩阵相乘。例如,我想定义一个函数 gsl_matrix_complex *multiply( gsl_matrix_com
我是一名优秀的程序员,十分优秀!