在Windows 8 64位

时间:2015-10-07 14:35:03

标签: c++ matlab visual-studio-2012 flann

我有Matlab R2013a和Visual Studio 2010.我正在尝试通过cmake编译flann库1.8.4源代码,但是在发布模式下在Visual Studio中构建INSTALL项目时出现错误。由于错误是在编译nearest_neighbors.cpp,我已经粘贴了下面的mex_nearest_neighbors.log中的行。你知道错误是什么吗?谢谢

  

构建于07年10月15日下午5:59:12开始。

     

1>项目" F:\ flann-1.8.4-src \ build32 \ src \ matlab \ mex_nearest_neighbors.vcxproj"在节点3上(构建目标)。

     

1> CustomBuild:

     

构建自定义规则F:/flann-1.8.4-src/src/matlab/CMakeLists.txt

     

CMake不需要重新运行,因为F:\ flann-1.8.4-src \ build32 \ src \ matlab \ CMakeFiles \ generate.stamp是最新的。

     

构建MEX扩展F:/flann-1.8.4-src/build32/src/matlab/nearest_neighbors.mexw64

     

1> cl:命令行警告D9024:无法识别的源文件类型' $ / c',假设对象文件            nearest_neighbors.cpp

     

1> F:/flann-1.8.4-src/src/cpp \ flann / util / saving.h(111):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:/flann-1.8.4-src/src/cpp \ flann / util / allocator.h(199):警告C4267:'参数' :从' size_t'转换到' int',可能丢失数据

     

1> F:/flann-1.8.4-src/src/cpp \ flann / util / random.h(82):警告C4244:'参数' :转换自' ptrdiff_t'到' int',可能丢失数据

     

1> F:/flann-1.8.4-src/src/cpp \ flann / util / lsh_table.h(446):警告C4267:'参数' :从' size_t'转换to' unsigned int',可能丢失数据

     

1> F:/flann-1.8.4-src/src/cpp \ flann / util / lsh_table.h(454):警告C4267:'参数' :从' size_t'转换to' unsigned int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(147):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(148):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(149):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(253):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(352):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(353):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(540):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp(541):警告C4267:'初始化' :从' size_t'转换到' int',可能丢失数据

     

1> F:/flann-1.8.4-src/src/cpp \ flann / util / lsh_table.h(262):警告C4267:' =' :从' size_t'转换to' unsigned int',可能丢失数据

     

F:/flann-1.8.4-src/src/cpp \ flann / util / lsh_table.h(260):编译类模板成员函数' void flann :: lsh :: LshTable :: initialize (为size_t)'                    同                    [                        ElementType = unsigned char                    ]

     

F:/flann-1.8.4-src/src/cpp \ flann / util / lsh_table.h(360):参见函数模板实例化' void flann :: lsh :: LshTable :: initialize (为size_t)'被编译                    同                    [                        ElementType = unsigned char                    ]

     

F:/flann-1.8.4-src/src/cpp \ flann / util / lsh_table.h(358):参见类模板实例化' flann :: lsh :: LshTable'被编译                    同                    [                        ElementType = unsigned char                    ]

     

1> LINK:致命错误LNK1181:无法打开输入文件' $ / c.obj'

     

1> C:\ PROGRA~1 \ MATLAB \ R2013A \ BIN \ MEX.PL:错误:编译' F:\ flann-1.8.4-src \ src \ matlab \ nearest_neighbors.cpp&#39 ;失败。

     

1>完成建筑项目" F:\ flann-1.8.4-src \ build32 \ src \ matlab \ mex_nearest_neighbors.vcxproj" (建立目标) - 失败。

     

构建失败。

     

时间流逝00:00:04.48

在Visual Studio指出编译mex_nearest_neighbors.cpp时出错,下面的行显示以下错误,但这可能是因为visual studio没有从nearest_neighbors.cpp构建nearest_neighbors.mexw64。

  

10 -10 src / matlab / cmake_install.cmake中的CMake错误:31(文件):

     

10 -10文件INSTALL找不到

     

10 -10 " F:。/flann-1.8.4-src/build/src/matlab/nearest_neighbors.mexw64"

     

10 -10呼叫堆栈(最近一次呼叫):

     

10 -10 src / cmake_install.cmake:33(包括)

     

10 -10 cmake_install.cmake:40(包括)

     

10> C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073:命令" setlocal

     

10> C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073:" C:\ Program Files( 86)\ CMake的\ BIN \ cmake.exe" -DBUILD_TYPE = Debug -P cmake_install.cmake

     

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073:if%errorlevel%neq 0 goto:cmEnd < / p>      

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073 :: cmEnd

     

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073:endlocal&amp; call:cmErrorLevel%errorlevel%&amp;转到:cmDone

     

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073 :: cmErrorLevel

     

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073:退出/ b%1

     

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073 :: cmDone

     

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073:if%errorlevel%neq 0 goto:VCEnd < / p>      

10&gt; C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V110 \ Microsoft.CppCommon.targets(134,5):错误MSB3073 :: VCEnd&#34;退出代码1.

下面,我在.. \ flann-1.8.4-src \ src \ matlab中添加了CMakeLists.txt的代码:

#IF(WIN32)
#    SET(MEXEXT_CMD cmd /C mexext)
#ELSE(WIN32)
#    SET(MEXEXT_CMD mexext)
#ENDIF(WIN32)

SET(MEX_NAME nearest_neighbors)

if(WIN32)
    find_program(MEX_CMD mex.bat)
    find_program(MEXEXT_CMD mexext.bat)
else()
    find_program(MEX_CMD mex)
    find_program(MEXEXT_CMD mexext)
endif()

find_program(OCT_CMD mkoctfile)

if(MEX_CMD AND MEXEXT_CMD)

get_filename_component(MEX_REAL_CMD ${MEX_CMD} ABSOLUTE)
get_filename_component(MEX_PATH ${MEX_REAL_CMD} PATH)

get_filename_component(MEXEXT_REAL_CMD ${MEXEXT_CMD} ABSOLUTE)
get_filename_component(MEXEXT_PATH ${MEXEXT_REAL_CMD} PATH)

if (MEX_PATH STREQUAL MEXEXT_PATH)
    message(STATUS "Found MATLAB at: " ${MEX_PATH})

    EXECUTE_PROCESS(COMMAND ${MEXEXT_REAL_CMD} OUTPUT_VARIABLE MEX_EXTENSION OUTPUT_STRIP_TRAILING_WHITESPACE)
    SET(MEX_FILE ${CMAKE_CURRENT_BINARY_DIR}/${MEX_NAME}.${MEX_EXTENSION})

    if (WIN32)
        set(MEX_BUILD_FLAGS "COMPFLAGS=\"$$COMPFLAGS ${OpenMP_CXX_FLAGS}\" LINKFLAGS=\"$$LINKFLAGS ${OpenMP_CXX_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}\"")
    else()
        set(MEX_BUILD_FLAGS "CFLAGS='$$CFLAGS ${OpenMP_CXX_FLAGS}' LDFLAGS='$$LDFLAGS ${OpenMP_CXX_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}'")
    endif()
    separate_arguments(MEX_BUILD_FLAGS)

    ADD_CUSTOM_COMMAND(
        OUTPUT ${MEX_FILE}
        COMMAND ${MEX_REAL_CMD}
        ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${LIBRARY_OUTPUT_PATH} -lflann_s ${MEX_BUILD_FLAGS}
        DEPENDS flann_s ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp
        COMMENT "Building MEX extension ${MEX_FILE}"
    )

    ADD_CUSTOM_TARGET(mex_${MEX_NAME} ALL DEPENDS ${MEX_FILE})

    FILE(GLOB MATLAB_SOURCES *.m)

    INSTALL (
        FILES ${MEX_FILE} ${MATLAB_SOURCES}
        DESTINATION share/flann/matlab
    )
else()
    message(WARNING "The 'mex' and 'mexext' programs have been found in different locations. It's likely that one of them is not part of the MATLAB instalation. Make sure that the 'bin' directory from the MATLAB instalation is in PATH")
    set(BUILD_MATLAB_BINDINGS OFF) 
endif()
elseif(OCT_CMD)
  SET(MEX_FILE ${CMAKE_CURRENT_BINARY_DIR}/${MEX_NAME}.mex)
  ADD_CUSTOM_COMMAND(
    OUTPUT ${MEX_FILE}
    COMMAND ${OCT_CMD}
    ARGS ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp -I${PROJECT_SOURCE_DIR}/src/cpp -L${LIBRARY_OUTPUT_PATH} -DFLANN_STATIC -lflann_s --mex
    DEPENDS flann_s ${CMAKE_CURRENT_SOURCE_DIR}/${MEX_NAME}.cpp
    COMMENT "Building MEX extension ${MEX_FILE}"
)

  ADD_CUSTOM_TARGET(mex_${MEX_NAME} ALL DEPENDS ${MEX_FILE})

  FILE(GLOB MATLAB_SOURCES *.m)

  INSTALL (
    FILES ${MEX_FILE} ${MATLAB_SOURCES}
    DESTINATION share/flann/octave
)
else()
    message(WARNING "Cannot find MATLAB or Octave instalation. Make sure that the 'bin' directory from the MATLAB instalation or that mkoctfile is in PATH")
    set(BUILD_MATLAB_BINDINGS OFF) 
endif()

0 个答案:

没有答案