我想写一个CMakeLists.txt
这样 CMake 编写 Visual Studio 2010(64 位)解决方案文件,以从 C++ 代码为 MATLAB R2011a(64 位)构建 mex 函数example.cxx
.
- 我不想使用 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.
欢迎任何建议!
我也遇到了同样的问题这个链接 http://matitk-cmake.blogspot.ca/非常有帮助(也是如何使用的一个很好的例子ITK http://www.itk.org/顺便说一句,在 MATLAB MEX 文件中)。我认为对于你的情况,你需要添加链接标志"/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 中来解决这个问题(本示例中未显示)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)