gpt4 book ai didi

matlab - 如何使用 CMake 和 Visual Studio 2010(64 位)构建 MATLAB R2011a(64 位)mex 文件?

转载 作者:行者123 更新时间:2023-12-04 05:49:48 24 4
gpt4 key购买 nike

我想写一个CMakeLists.txt以便 CMake 编写 Visual Studio 2010(64 位)解决方案文件,以从 C++ 代码 example.cxx 为 MATLAB R2011a(64 位)构建 mex 函数.

  • 我不想使用 MATLAB 的编译器包装器 mex但设置 Visual Studio 解决方案文件,以便 Visual C++ 链接相关的 MATLAB 库。
  • example.cxx除了 mex 文件所需的 MATLAB 库之外,没有任何依赖项。
  • CMake 2.8.7 已正确设置,以便它使用 Visual Studio 2010 的 64 位生成器。

  • 我现在所做的事情的本质是
    find_package(Matlab)
    add_library(example STATIC example.cxx)
    target_link_libraries(example ${MATLAB_LIBRARIES})

    编译器和链接器都不会发出任何错误。我安装输出 example.lib名下 example.mexw64在 MATLAB 路径中的目录中。当我打电话时 example从 MATLAB,我收到错误消息
    ??? Invalid MEX-file
    'C:\...\example.mexw64':
    C:\...\example.mexw64 is not a valid Win32 application.

    欢迎任何建议!

    最佳答案

    我有同样的问题和 this link非常有帮助(也可以作为一个很好的例子,说明如何在 MATLAB MEX 文件中使用 ITK 顺便说一句)。我认为对于您的情况,您需要添加链接标志 "/export:mexFunction"给您的 CMakeLists.txt文件。下面的例子:

    PROJECT(example)
    FIND_PACKAGE(Matlab REQUIRED)

    INCLUDE_DIRECTORIES(${MATLAB_INCLUDE_DIR})

    ADD_LIBRARY(example MODULE example.cpp)
    ADD_DEFINITIONS(-DMATLAB_MEX_FILE)

    # Needed for entry point.
    SET_TARGET_PROPERTIES(example
    PROPERTIES
    LINK_FLAGS "/export:mexFunction"
    )

    # Change the dll extension to a mex extension.
    set_target_properties(example PROPERTIES SUFFIX ".mexw64")

    TARGET_LINK_LIBRARIES(example ${MATLAB_LIBRARIES})

    请注意 FIND_PACKAGE(Matlab)似乎没有那么好,所以这对某些人来说可能是个问题。我不得不通过将 MATLAB 路径硬编码到 CMakeLists.txt(本示例中未显示)来绕过它。

    关于matlab - 如何使用 CMake 和 Visual Studio 2010(64 位)构建 MATLAB R2011a(64 位)mex 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10218626/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com