致命错误 C1083:无法打开包含文件:'dlfcn.h':没有这样的文件或目录 PyLPSolve
fatal error C1083: Cannot open include file: 'dlfcn.h': No such file or directory PyLPSolve
[关闭] 我正在尝试在 windows 10、64 位上使用 python 2.7 安装 pylpsolve。当我 运行 python setup.py install
时出现以下错误:fatal error C1083: Cannot open include file: 'dlfcn.h': No such file or directory
。
我已经在网上搜索(特别是 here and here)但找不到解决方案。我希望你能帮助我。
首先,你应该注意到 pylpsolve
似乎已经死了。它从不支持 Windows,似乎有很多未完成的拉取请求,并且在我的测试中似乎有一些错误。
另一方面,您也许可以使用它并且解决您的问题并不难。您收到此消息是因为 setup.py
本质上是重新编译 lpsolve
,并且在这个过程中,这样做是为了 linux 而不是 Windows。 setup.py
可能像在 linux 上一样正常工作,但在 windows 上您需要进行一些更改。
我认为关键的变化是将这些值添加到 setup.py 中的编译器参数中:
"-D_WINDLL", "-DWIN32"
我在 setup.py
.
中使用以下行编译成功
lpsolve_base = 'lp_solve_5.5'
compiler_args = ["/Gz", "/Zp8", "-D_WINDLL", "-DWIN32", "-D_CRT_SECURE_NO_DEPRECATE",
"-D_CRT_NONSTDC_NO_DEPRECATE", "-DYY_NEVER_INTERACTIVE", "-DPARSER_LP",
"-DINVERSE_ACTIVE=INVERSE_LUSOL", "-DRoleIsExternalInvEngine"]
extensions = [
Extension("pylpsolve",
include_dirs = [os.path.join(lpsolve_base, d) for d in ['.',
'shared', 'bfp', 'bfp/bfp_LUSOL', 'bfp/bfp_LUSOL/LUSOL',
'colamd']] + [numpy.get_include()],
sources = ["pylpsolve.pyx"] + [os.path.join(lpsolve_base, f) for f in
['lp_MDO.c', 'shared/commonlib.c', 'shared/mmio.c', 'shared/myblas.c',
'ini.c', 'fortify.c', 'colamd/colamd.c', 'lp_rlp.c', 'lp_crash.c',
'bfp/bfp_LUSOL/lp_LUSOL.c', 'bfp/bfp_LUSOL/LUSOL/lusol.c', 'lp_Hash.c',
'lp_lib.c', 'lp_wlp.c', 'lp_matrix.c', 'lp_mipbb.c', 'lp_MPS.c', 'lp_params.c',
'lp_presolve.c', 'lp_price.c', 'lp_pricePSE.c', 'lp_report.c', 'lp_scale.c',
'lp_simplex.c', 'lp_SOS.c', 'lp_utils.c', 'yacc_read.c']],
extra_compile_args = compiler_args + ['/EHsc']
)
]
setup(
name = 'pylpsolve',
ext_modules = cythonize(extensions),
)
[关闭] 我正在尝试在 windows 10、64 位上使用 python 2.7 安装 pylpsolve。当我 运行 python setup.py install
时出现以下错误:fatal error C1083: Cannot open include file: 'dlfcn.h': No such file or directory
。
我已经在网上搜索(特别是 here and here)但找不到解决方案。我希望你能帮助我。
首先,你应该注意到 pylpsolve
似乎已经死了。它从不支持 Windows,似乎有很多未完成的拉取请求,并且在我的测试中似乎有一些错误。
另一方面,您也许可以使用它并且解决您的问题并不难。您收到此消息是因为 setup.py
本质上是重新编译 lpsolve
,并且在这个过程中,这样做是为了 linux 而不是 Windows。 setup.py
可能像在 linux 上一样正常工作,但在 windows 上您需要进行一些更改。
我认为关键的变化是将这些值添加到 setup.py 中的编译器参数中:
"-D_WINDLL", "-DWIN32"
我在 setup.py
.
lpsolve_base = 'lp_solve_5.5'
compiler_args = ["/Gz", "/Zp8", "-D_WINDLL", "-DWIN32", "-D_CRT_SECURE_NO_DEPRECATE",
"-D_CRT_NONSTDC_NO_DEPRECATE", "-DYY_NEVER_INTERACTIVE", "-DPARSER_LP",
"-DINVERSE_ACTIVE=INVERSE_LUSOL", "-DRoleIsExternalInvEngine"]
extensions = [
Extension("pylpsolve",
include_dirs = [os.path.join(lpsolve_base, d) for d in ['.',
'shared', 'bfp', 'bfp/bfp_LUSOL', 'bfp/bfp_LUSOL/LUSOL',
'colamd']] + [numpy.get_include()],
sources = ["pylpsolve.pyx"] + [os.path.join(lpsolve_base, f) for f in
['lp_MDO.c', 'shared/commonlib.c', 'shared/mmio.c', 'shared/myblas.c',
'ini.c', 'fortify.c', 'colamd/colamd.c', 'lp_rlp.c', 'lp_crash.c',
'bfp/bfp_LUSOL/lp_LUSOL.c', 'bfp/bfp_LUSOL/LUSOL/lusol.c', 'lp_Hash.c',
'lp_lib.c', 'lp_wlp.c', 'lp_matrix.c', 'lp_mipbb.c', 'lp_MPS.c', 'lp_params.c',
'lp_presolve.c', 'lp_price.c', 'lp_pricePSE.c', 'lp_report.c', 'lp_scale.c',
'lp_simplex.c', 'lp_SOS.c', 'lp_utils.c', 'yacc_read.c']],
extra_compile_args = compiler_args + ['/EHsc']
)
]
setup(
name = 'pylpsolve',
ext_modules = cythonize(extensions),
)