作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想写一个CMakeLists.txt
以便 CMake 编写 Visual Studio 2010(64 位)解决方案文件,以从 C++ 代码 example.cxx
为 MATLAB R2011a(64 位)构建 mex 函数.
mex
但设置 Visual Studio 解决方案文件,以便 Visual C++ 链接相关的 MATLAB 库。 example.cxx
除了 mex 文件所需的 MATLAB 库之外,没有任何依赖项。 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/
我是一名优秀的程序员,十分优秀!