致命错误 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),
)