argman / EAST

A tensorflow implementation of EAST text detector
GNU General Public License v3.0
3.02k stars 1.05k forks source link

Compile lanms on windows successfully! #120

Closed ZhuMingmin9123 closed 6 years ago

ZhuMingmin9123 commented 6 years ago

my environment is: windows10 , python3.6 (ps:I use Anaconda3), vs2015 Update 3 (ps: Visual Studio version should be vs2015 Update 3 or newer)

Step 1:Open the console make sure you can use X64 compiler:cl.exe(note: not X86, not X86, not X86 ) 2 default

Step 2:to compile adaptor.cpp to adaptor.pyd execute:cd your_dir\lanms execute:cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"C:\ProgramData\Anaconda3\libs" 1 ok,adaptor.pyd appears!

Step 3:comment some code in __init__.py comment line7 and line8 2

Step 4:Congratulations! You can import lanms.

zxytim commented 6 years ago

Thanks for sharing! I've added a link to this issue at the bottom of README.

ghost commented 6 years ago

if you have space in your path, like "Program Files", then you should input the command like "Progra~1"

aricelover commented 6 years ago

I've finished these steps, so what should I do next?(a beginner)

chclock commented 6 years ago

For VS2017, you can find X64 tool on path like "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Visual Studio 2017\Visual Studio Tools\VC"

Vivianwxf commented 6 years ago

@ZhuMingmin9123 Thanks for your sharing~! my environment is Win7 python3.5 vs2015, but after I finished testing few images, I find that the capacity of my disk C is decreasing obviously,there only 8.5Gleft, I have no idea about this, could you please tell me how can I operate to clean the space for disk C?

mm1860 commented 6 years ago

a touching post

RameshOswal commented 6 years ago

thanks alot. by the way how did you find this solution :P

mm1860 commented 6 years ago

find this solution from "https://github.com/mm1860/EAST_ICPR"

jsxyhelu commented 6 years ago

that's great,many thanks

zqm840527 commented 6 years ago

Hi there, does anyone encountered the same problem? https://github.com/argman/EAST/issues/184 FileNotFoundError: [Errno 2] No such file or directory: '/proc/cpuinfo'


problem solved, thanks for @harshthaker's help, solution as below: https://github.com/argman/EAST/issues/184#issuecomment-417648222 I am not sure if it is because of it being a linux call. I am using Mac and I received the same error. But to make it work, I just commented out the following line which is get_host_info() function call in run_demo_server.py file. It works for me. line 136

ret.update(get_host_info())

EDGSCOUT commented 6 years ago

F:\CaiCheng\EAST-master\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp / I ./include / I"E:\Anaconda\include 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.00.24215.1 版 版权所有(C) Microsoft Corporation。保留所有权利。

cl: 命令行 warning D9002 :忽略未知选项“/” cl: 命令行 warning D9002 :忽略未知选项“/” cl: 命令行 warning D9024 :无法识别的源文件类型“I”,假定为对象文件 cl: 命令行 warning D9024 :无法识别的源文件类型“./include”,假定为对象文件 cl: 命令行 warning D9024 :无法识别的源文件类型“IE:\Anaconda\include”,假定为对象文件 adaptor.cpp adaptor.cpp(1): fatal error C1083: 无法打开包括文件: “pybind11/pybind11.h”: No such file or directory clipper.cpp C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(341): warning C4530: 使用了 C++ 异常处理程序,但 未启用展开语义。请指定 /EHsc ./include/clipper/clipper.cpp(3795): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\limits(210): warning C4577: 在未指定异常处理模式的情况下 使用了 "noexcept";不一定会在异常时终止。指定 /EHsc 正在生成代码...

F:\CaiCheng\EAST-master\lanms>" / LD /Fe:adaptor.pyd / link / LIBPATH:"E:\Anaconda\libs" 文件名、目录名或卷标语法不正确。

DaisyLoveU commented 6 years ago

F:\CaiCheng\EAST-master\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp / I ./include / I"E:\Anaconda\include 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.00.24215.1 版 版权所有(C) Microsoft Corporation。保留所有权利。

cl: 命令行 warning D9002 :忽略未知选项“/” cl: 命令行 warning D9002 :忽略未知选项“/” cl: 命令行 warning D9024 :无法识别的源文件类型“I”,假定为对象文件 cl: 命令行 warning D9024 :无法识别的源文件类型“./include”,假定为对象文件 cl: 命令行 warning D9024 :无法识别的源文件类型“IE:\Anaconda\include”,假定为对象文件 adaptor.cpp adaptor.cpp(1): fatal error C1083: 无法打开包括文件: “pybind11/pybind11.h”: No such file or directory clipper.cpp C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\xlocale(341): warning C4530: 使用了 C++ 异常处理程序,但 未启用展开语义。请指定 /EHsc ./include/clipper/clipper.cpp(3795): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE\limits(210): warning C4577: 在未指定异常处理模式的情况下 使用了 "noexcept";不一定会在异常时终止。指定 /EHsc 正在生成代码...

F:\CaiCheng\EAST-master\lanms>" / LD /Fe:adaptor.pyd / link / LIBPATH:"E:\Anaconda\libs" 文件名、目录名或卷标语法不正确。

cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "D:\Anaconda3\include(你的anaconda3的的文件路径,下面的也是)" /LD /Fe:adaptor.pyd /link/LIBPATH:"D:\Anaconda3\libs"

Phantom1003 commented 6 years ago

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\include\xlocale(313): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc clipper.cpp C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.12.25827\include\xlocale(313): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc ./include/clipper/clipper.cpp(3794): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 正在生成代码... Microsoft (R) Incremental Linker Version 14.12.25835.0 Copyright (C) Microsoft Corporation. All rights reserved.

/dll /implib:adaptor.lib /out:adaptor.pyd /LIBPATH:E:\Anaconda\libs adaptor.obj clipper.obj python37.lib(python37.dll) : fatal error LNK1112: 模块计算机类型“x64”与目标计算机类型“x86”冲突

我使用VS2017,最后报错这个该怎么解决,谢谢!

LyanJin commented 5 years ago

我按照你所说的成功的生成pyd文件,setup之后 在import时报错 No model named 'lanms.adaptor' 请问你遇到这个问题了么? 或者有什么解决方案?

LyanJin commented 5 years ago

@aricelover have you solved it?

Sukanya-Kudi commented 5 years ago

I am able to generate the .pyd , .obj files but unable to import lanms. Do we need to add these file in some path ? I am using anaconda.

245123030 commented 5 years ago

VS2017成功编译,复制上面路径时注意删除很多不必要的空格

aligoglos commented 5 years ago

I've tried to compile with python with this command but this error occurred :

D:\Artificial Intelligence\_TextDetection\RFB-Text-Detection-master\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\Users\127051\AppData\Local\Programs\Python\Python35\include" /LD /Fe:adaptor.pyd /link/LIBPATH: "C:\Users\127051\AppData\Local\Programs\Python\Python35\libs"
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

adaptor.cpp
c:\users\127051\appdata\local\programs\python\python35\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
clipper.cpp
d:\artificial intelligence\ocr\source\_textdetection\rfb-text-detection-master\lanms\include\clipper\clipper.hpp(52): fatal error C1083: Cannot open include file: 'vector': No such file or directory
Generating Code...
aligoglos commented 5 years ago

I solved issue by create this build script :

# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------------------------------------------------

import os
from os.path import join as pjoin
import numpy as np
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

def find_in_path(name, path):
    "Find a file in a search path"
    # adapted fom http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/
    for dir in path.split(os.pathsep):
        binpath = pjoin(dir, name)
        if os.path.exists(binpath):
            return os.path.abspath(binpath)
    return None

def locate_cuda():
    """Locate the CUDA environment on the system

    Returns a dict with keys 'home', 'nvcc', 'include', and 'lib64'
    and values giving the absolute path to each directory.

    Starts by looking for the CUDAHOME env variable. If not found, everything
    is based on finding 'nvcc' in the PATH.
    """

    # first check if the CUDAHOME env variable is in use
    if 'CUDAHOME' in os.environ:
        home = os.environ['CUDAHOME']
        nvcc = pjoin(home, 'bin')
    else:
        # otherwise, search the PATH for NVCC
        default_path = pjoin(os.sep, 'usr', 'local', 'cuda', 'bin')
        nvcc = find_in_path('nvcc', os.environ['PATH'] + os.pathsep + default_path)
        if nvcc is None:
            raise EnvironmentError('The nvcc binary could not be '
                                   'located in your $PATH. Either add it to your path, or set $CUDAHOME')
        home = os.path.dirname(os.path.dirname(nvcc))

    cudaconfig = {'home': home, 'nvcc': nvcc,
                  'include': pjoin(home, 'include'),
                  'lib64': pjoin(home, 'lib/x64')}
    for k, v in cudaconfig.items():
        if not os.path.exists(v):
            raise EnvironmentError('The CUDA %s path could not be located in %s' % (k, v))

    return cudaconfig

CUDA = locate_cuda()

# Obtain the numpy include directory.  This logic works across numpy versions.
try:
    numpy_include = np.get_include()
except AttributeError:
    numpy_include = np.get_numpy_include()

def customize_compiler_for_nvcc(self):
    """inject deep into distutils to customize how the dispatch
    to gcc/nvcc works.

    If you subclass UnixCCompiler, it's not trivial to get your subclass
    injected in, and still have the right customizations (i.e.
    distutils.sysconfig.customize_compiler) run on it. So instead of going
    the OO route, I have this. Note, it's kindof like a wierd functional
    subclassing going on."""

    # tell the compiler it can processes .cu
    self.src_extensions.append('.cu')

    # save references to the default compiler_so and _comple methods
    #default_compiler_so = self.compiler_so
    super = self._compile

    # now redefine the _compile method. This gets executed for each
    # object but distutils doesn't have the ability to change compilers
    # based on source extension: we add it.
    def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
        print(extra_postargs)
        if os.path.splitext(src)[1] == '.cu':
            # use the cuda for .cu files
            self.set_executable('compiler_so', CUDA['nvcc'])
            # use only a subset of the extra_postargs, which are 1-1 translated
            # from the extra_compile_args in the Extension class
            postargs = extra_postargs['nvcc']
        else:
            postargs = extra_postargs['gcc']

        super(obj, src, ext, cc_args, postargs, pp_opts)
        # reset the default compiler_so, which we might have changed for cuda
        self.compiler_so = default_compiler_so

    # inject our redefined _compile method into the class
    self._compile = _compile

# run the customize_compiler
class custom_build_ext(build_ext):
    def build_extensions(self):
        customize_compiler_for_nvcc(self.compiler)
        build_ext.build_extensions(self)

ext_modules = [
    Extension(
        'lanms.adaptor',
        sources=[ 'adaptor.cpp', 'include/clipper/clipper.cpp'],
        include_dirs=[numpy_include, './' , 'include/clipper', 'include/'],
        extra_compile_args={
            'gcc': ['-Wno-cpp', '-Wno-unused-function', '-std=c99']},
    ),
]

setup(
    name='lanms',
    ext_modules=ext_modules,
    # inject our custom trigger
    cmdclass={'build_ext': custom_build_ext},
)
sudo-thamaraikannan commented 5 years ago

Anyone can help regarding ,LANMS Compile cmds for Ubuntu 16.04 LTS with G++ Compiler 5.4.0. When try compile, got this below error.

g++ -o adaptor adaptor.cpp adaptor.cpp:1:31: fatal error: pybind11/pybind11.h: No such file or directory

YCTLYSLX commented 5 years ago

您好,我也遇到同样的问题。 Z:\wangGraduate\EAST_ICPR\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"C:\ProgramData\Anaconda3\libs" 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.23.28106.4 版 版权所有(C) Microsoft Corporation。保留所有权利。

adaptor.cpp C:\ProgramData\Anaconda3\include\pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory clipper.cpp C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\crtdefs.h(10): fatal error C1083: 无法打开包括文件: “corecrt.h”: No such file or directory 正在生成代码...

请问这个问题如何解决

YCTLYSLX commented 5 years ago

您好,我也遇到同样的问题。 Z:\wangGraduate\EAST_ICPR\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"C:\ProgramData\Anaconda3\libs" 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.23.28106.4 版 版权所有(C) Microsoft Corporation。保留所有权利。

adaptor.cpp C:\ProgramData\Anaconda3\include\pyconfig.h(59): fatal error C1083: 无法打开包括文件: “io.h”: No such file or directory clipper.cpp C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.23.28105\include\crtdefs.h(10): fatal error C1083: 无法打开包括文件: “corecrt.h”: No such file or directory 正在生成代码...

请问这个问题如何解决

本人已解决,安装完win10 SDK之后,在运行就好了

marisaedwina commented 5 years ago

I've tried to compile with python with this command but this error occurred :

D:\Artificial Intelligence\_TextDetection\RFB-Text-Detection-master\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\Users\127051\AppData\Local\Programs\Python\Python35\include" /LD /Fe:adaptor.pyd /link/LIBPATH: "C:\Users\127051\AppData\Local\Programs\Python\Python35\libs"
Microsoft (R) C/C++ Optimizing Compiler Version 19.00.24215.1 for x86
Copyright (C) Microsoft Corporation.  All rights reserved.

adaptor.cpp
c:\users\127051\appdata\local\programs\python\python35\include\pyconfig.h(68): fatal error C1083: Cannot open include file: 'io.h': No such file or directory
clipper.cpp
d:\artificial intelligence\ocr\source\_textdetection\rfb-text-detection-master\lanms\include\clipper\clipper.hpp(52): fatal error C1083: Cannot open include file: 'vector': No such file or directory
Generating Code...

I solved issue by create this build script :

# --------------------------------------------------------
# Fast R-CNN
# Copyright (c) 2015 Microsoft
# Licensed under The MIT License [see LICENSE for details]
# Written by Ross Girshick
# --------------------------------------------------------

import os
from os.path import join as pjoin
import numpy as np
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext

def find_in_path(name, path):
    "Find a file in a search path"
    # adapted fom http://code.activestate.com/recipes/52224-find-a-file-given-a-search-path/
    for dir in path.split(os.pathsep):
        binpath = pjoin(dir, name)
        if os.path.exists(binpath):
            return os.path.abspath(binpath)
    return None

def locate_cuda():
    """Locate the CUDA environment on the system

    Returns a dict with keys 'home', 'nvcc', 'include', and 'lib64'
    and values giving the absolute path to each directory.

    Starts by looking for the CUDAHOME env variable. If not found, everything
    is based on finding 'nvcc' in the PATH.
    """

    # first check if the CUDAHOME env variable is in use
    if 'CUDAHOME' in os.environ:
        home = os.environ['CUDAHOME']
        nvcc = pjoin(home, 'bin')
    else:
        # otherwise, search the PATH for NVCC
        default_path = pjoin(os.sep, 'usr', 'local', 'cuda', 'bin')
        nvcc = find_in_path('nvcc', os.environ['PATH'] + os.pathsep + default_path)
        if nvcc is None:
            raise EnvironmentError('The nvcc binary could not be '
                                   'located in your $PATH. Either add it to your path, or set $CUDAHOME')
        home = os.path.dirname(os.path.dirname(nvcc))

    cudaconfig = {'home': home, 'nvcc': nvcc,
                  'include': pjoin(home, 'include'),
                  'lib64': pjoin(home, 'lib/x64')}
    for k, v in cudaconfig.items():
        if not os.path.exists(v):
            raise EnvironmentError('The CUDA %s path could not be located in %s' % (k, v))

    return cudaconfig

CUDA = locate_cuda()

# Obtain the numpy include directory.  This logic works across numpy versions.
try:
    numpy_include = np.get_include()
except AttributeError:
    numpy_include = np.get_numpy_include()

def customize_compiler_for_nvcc(self):
    """inject deep into distutils to customize how the dispatch
    to gcc/nvcc works.

    If you subclass UnixCCompiler, it's not trivial to get your subclass
    injected in, and still have the right customizations (i.e.
    distutils.sysconfig.customize_compiler) run on it. So instead of going
    the OO route, I have this. Note, it's kindof like a wierd functional
    subclassing going on."""

    # tell the compiler it can processes .cu
    self.src_extensions.append('.cu')

    # save references to the default compiler_so and _comple methods
    #default_compiler_so = self.compiler_so
    super = self._compile

    # now redefine the _compile method. This gets executed for each
    # object but distutils doesn't have the ability to change compilers
    # based on source extension: we add it.
    def _compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
        print(extra_postargs)
        if os.path.splitext(src)[1] == '.cu':
            # use the cuda for .cu files
            self.set_executable('compiler_so', CUDA['nvcc'])
            # use only a subset of the extra_postargs, which are 1-1 translated
            # from the extra_compile_args in the Extension class
            postargs = extra_postargs['nvcc']
        else:
            postargs = extra_postargs['gcc']

        super(obj, src, ext, cc_args, postargs, pp_opts)
        # reset the default compiler_so, which we might have changed for cuda
        self.compiler_so = default_compiler_so

    # inject our redefined _compile method into the class
    self._compile = _compile

# run the customize_compiler
class custom_build_ext(build_ext):
    def build_extensions(self):
        customize_compiler_for_nvcc(self.compiler)
        build_ext.build_extensions(self)

ext_modules = [
    Extension(
        'lanms.adaptor',
        sources=[ 'adaptor.cpp', 'include/clipper/clipper.cpp'],
        include_dirs=[numpy_include, './' , 'include/clipper', 'include/'],
        extra_compile_args={
            'gcc': ['-Wno-cpp', '-Wno-unused-function', '-std=c99']},
    ),
]

setup(
    name='lanms',
    ext_modules=ext_modules,
    # inject our custom trigger
    cmdclass={'build_ext': custom_build_ext},
)

Hi, I also encounter the same issue like this. Can you specify the file name and where do I need to put the script?

Thank you!

aligoglos commented 5 years ago

Hi @marisaedwina, You can save script as build.pyin lanms folder and run below command in cmd: python build.py install

marisaedwina commented 5 years ago

Thank you for the feedback @aligoglos I tried to run the script but it gives me an error

error

aligoglos commented 5 years ago

I think you can remove or comment CUDA = locate_cuda() line.

marisaedwina commented 5 years ago

I think you can remove or comment CUDA = locate_cuda() line.

Thanks for your correction, I could run the script but still give me an error

error2

William1Wu commented 4 years ago

Does anyone can help me? I reference @ZhuMingmin9123 suggestion and using VS2015 x64 compiler to build code and get adaptor.pyd.

Traceback (most recent call last): File "eval.py", line 196, in tf.app.run() File "D:\Software\Anaconda3\envs\east\lib\site-packages\tensorflow\python\platform\app.py", line 125, in run _sys.exit(main(argv)) File "eval.py", line 162, in main boxes, timer = detect(score_map=score, geo_map=geometry, timer=timer) File "eval.py", line 100, in detect boxes = lanms.merge_quadrangle_n9(boxes.astype('float32'), nms_thres) File "C:\Users\703\Desktop\EAST-master\lanms__init__.py", line 14, in merge_quadrangle_n9 from .adaptor import merge_quadrangle_n9 as nms_impl ImportError: DLL load failed: \u627e\u4e0d\u5230\u6307\u5b9a\u7684\u6a21\u7d44\u3002

Abbasi92 commented 4 years ago

C:\Users\admin\Desktop\EAST-master\lanms>cl adaptor.cpp ./include/clipper/clippe r.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /li nk/LIBPATH:"C:\ProgramData\Anaconda3\libs" 'cl' is not recognized as an internal or external command, operable program or batch file.

Abbasi92 commented 4 years ago

Please help

FortuneStar commented 4 years ago

if you have space in your path, like "Program Files", then you should input the command like "Progra~1"

Your answer is right.

RamjiB commented 4 years ago

I think you can remove or comment CUDA = locate_cuda() line.

Thanks for your correction, I could run the script but still give me an error

error2

I am facing the same issue. Do you have a solution for this?

Memhueet commented 4 years ago

/dll /implib:adaptor.lib /out:adaptor.pyd /LIBPATH:D:Tools\Miniconda\envs\ov\libs adaptor.obj clipper.obj

LINK : fatal error LNK1104: can't open file“python37.lib”

how to solve this problem,please?

samtlink commented 4 years ago

/dll /implib:adaptor.lib /out:adaptor.pyd /LIBPATH:C:\ProgramData\Anaconda3\libs adaptor.obj clipper.obj python37.lib(python37.dll) : fatal error LNK1112: module machine type 'x64' conflicts with target machine type 'x86'

Can anybody help with this error? I don't know what more information to post so kindly ask if it is needed. Thanks a lot.

samtlink commented 4 years ago

C:\Users\admin\Desktop\EAST-master\lanms>cl adaptor.cpp ./include/clipper/clippe r.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /li nk/LIBPATH:"C:\ProgramData\Anaconda3\libs" 'cl' is not recognized as an internal or external command, operable program or batch file.

@Abbasi92 I know I am late but you have to type that comment in the visual studio's developer console. Hope this helps. Stay safe.

KKDDD commented 4 years ago

/ dll /implib:adaptor.lib /out:adaptor.pyd / LIBPATH:D:Tools \ Miniconda \ envs \ ov \ libs Adaptor.obj clipper.obj

链接:致命错误LNK1104:无法打开文件“ python37.lib”

请问如何解决这个问题?

Hi,i have same problem,do you solve it?

KKDDD commented 4 years ago

/ dll /implib:adaptor.lib /out:adaptor.pyd / LIBPATH:D:Tools \ Miniconda \ envs \ ov \ libs Adaptor.obj clipper.obj 链接:致命错误LNK1104:无法打开文件“ python37.lib” 请问如何解决这个问题?

嗨,我有同样的问题,你解决了吗?

well,i solve this problem, copy python37.lib to MSVC lib

ghost commented 4 years ago

adaptor.lib - adaptor.zip

GanWang commented 4 years ago

my environment is: windows10 , python3.6 (ps:I use Anaconda3), vs2015 Update 3 (ps: Visual Studio version should be vs2015 Update 3 or newer)

Step 1:Open the console make sure you can use X64 compiler:cl.exe(note: not X86, not X86, not X86 ) 2 default

Step 2:to compile adaptor.cpp to adaptor.pyd execute:cd your_dir\lanms execute:cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\ProgramData\Anaconda3\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"C:\ProgramData\Anaconda3\libs" 1 ok,adaptor.pyd appears!

Step 3:comment some code in init.py comment line7 and line8 2

Step 4:Congratulations! You can import lanms.

Thank you for your replay!It really works!But i dont know why it works,if possible,please teach me! let me know the meanings of your actions.

hung-doan commented 3 years ago

Does anyone can help me? I reference @ZhuMingmin9123 suggestion and using VS2015 x64 compiler to build code and get adaptor.pyd.

  • Win10 x64
  • Anaconda
  • Python3.5
  • Tensorflow-gpu 1.5.0

Traceback (most recent call last): File "eval.py", line 196, in tf.app.run() File "D:\Software\Anaconda3\envs\east\lib\site-packages\tensorflow\python\platform\app.py", line 125, in run _sys.exit(main(argv)) File "eval.py", line 162, in main boxes, timer = detect(score_map=score, geo_map=geometry, timer=timer) File "eval.py", line 100, in detect boxes = lanms.merge_quadrangle_n9(boxes.astype('float32'), nms_thres) File "C:\Users\703\Desktop\EAST-master\lanmsinit.py", line 14, in merge_quadrangle_n9 from .adaptor import merge_quadrangle_n9 as nms_impl ImportError: DLL load failed: \u627e\u4e0d\u5230\u6307\u5b9a\u7684\u6a21\u7d44\u3002

I fixed this issue by using the the includes & libs folder of the python For example my python is installed at C:\Users\hungdoan\AppData\Local\Programs\Python\Python38 Then I will use the includes and libs from this folder rather than from the Anaconda.

e.g (NOTE: the python location will be changed base on your installation)

cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "C:\Users\hungdoan\AppData\Local\Programs\Python\Python38\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"C:\Users\hungdoan\AppData\Local\Programs\Python\Python38\libs"
burak-yildizoz commented 3 years ago

Solution for Windows with CMake: https://github.com/argman/EAST/pull/370

VIJAY-KUMAR-TG commented 3 years ago

can u please give step by step procedure to run this project plz...

burak-yildizoz commented 3 years ago

@VIJAY-KUMAR-TG See Google Colab results.

kevinunger commented 1 year ago

Just fixed it by just installing this: pip install lanms-neo

https://github.com/gen-ko/lanms-neo

papayalove commented 2 months ago

D:\projects\EAST\lanms>cl adaptor.cpp ./include/clipper/clipper.cpp /I ./include /I "D:\softwares\anaconda3\include" /LD /Fe:adaptor.pyd /link/LIBPATH:"D:\softwares\anaconda3\libs" 用于 x64 的 Microsoft (R) C/C++ 优化编译器 19.36.32537 版 版权所有(C) Microsoft Corporation。保留所有权利。

adaptor.cpp D:\projects\EAST\lanms\include\pybind11\cast.h(90): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc D:\projects\EAST\lanms\include\pybind11\cast.h(490): error C2027: 使用了未定义类型“_frame” D:\softwares\anaconda3\include\pytypedefs.h(22): note: 参见“_frame”的声明 D:\projects\EAST\lanms\include\pybind11\cast.h(492): error C2027: 使用了未定义类型“_frame” D:\softwares\anaconda3\include\pytypedefs.h(22): note: 参见“_frame”的声明 D:\projects\EAST\lanms\include\pybind11\cast.h(493): error C2027: 使用了未定义类型“_frame” D:\softwares\anaconda3\include\pytypedefs.h(22): note: 参见“_frame”的声明 ./include\pybind11/pybind11.h(1794): error C2039: "frame": 不是 "_ts" 的成员 D:\softwares\anaconda3\include\cpython/pystate.h(82): note: 参见“_ts”的声明 ./include\pybind11/pybind11.h(1795): error C2027: 使用了未定义类型“_frame” D:\softwares\anaconda3\include\pytypedefs.h(22): note: 参见“_frame”的声明 ./include\pybind11/pybind11.h(1796): error C2027: 使用了未定义类型“_frame” D:\softwares\anaconda3\include\pytypedefs.h(22): note: 参见“_frame”的声明 ./include\pybind11/pybind11.h(1799): error C2027: 使用了未定义类型“_frame” D:\softwares\anaconda3\include\pytypedefs.h(22): note: 参见“_frame”的声明 ./include\pybind11/pybind11.h(1798): error C2660: “PyDict_GetItem”: 函数不接受 1 个参数 D:\softwares\anaconda3\include\dictobject.h(22): note: 参见“PyDict_GetItem”的声明 ./include\pybind11/pybind11.h(1798): note: 尝试匹配参数列表“()”时 ./include\pybind11/numpy.h(35): error C2065: “ssize_t”: 未声明的标识符 ./include\pybind11/numpy.h(35): error C2338: static_assert failed: 'ssize_t != Py_intptr_t' clipper.cpp ./include/clipper/clipper.cpp(1066): warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc ./include/clipper/clipper.cpp(3795): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 正在生成代码...

什么问题呢