gpt4 book ai didi

c++ - 使用 boost 编译 mexfunction 时出现链接器错误

转载 作者:太空宇宙 更新时间:2023-11-04 11:42:57 26 4
gpt4 key购买 nike

我正在尝试在 mexfunctions 中使用 boost。

下面是我的代码

main.cpp

#include <mex.h>
#include <boost/thread.hpp>
#include <boost/date_time.hpp>

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

{
mexPrintf("test boost");

}

我使用下面的命令编译它

mex main.cpp -LC:\Boost\1.55.0\VC\10.0\x64\stage\lib -IC:\Boost\1.55.0\VC\10.0\x64

然后我得到这个链接错误

LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-1_55.lib' 

C:\PROGRA~1\MATLAB\R2012A\BIN\MEX.PL: Error: Link of 'main.mexw64' failed.

然后我再次编译使用,

mex main.cpp -LC:\Boost\1.55.0\VC\10.0\x64\stage\lib -IC:\Boost\1.55.0\VC\10.0\x64 -llibboost_thread-vc100-mt-s-1_55

但我仍然得到同样的错误。我该如何解决这个问题?

编辑:

我可以在普通的 visual studio c++ 项目中使用 boost,没有任何问题。只有当我把它放在 mexfunction 中时才会出现问题

最佳答案

我知道这个问题现在已经很老了,但我在 mex 上遇到过类似的问题,我可以通过不仅指定库目录搜索路径,还指定编译库对象的名称来解决它。

为此,我使用了以下命令:

mex main.cpp -I<path/to/lib> -L<path/to/lib/objects> -l<object_name>

命令行选项-l 用于告诉mex 链接指定的对象库。然后,Mex 将尝试查找添加到 -l 的任何内容,并将为 Windows 附加 .lib 并为 unix 附加 .LIBEXT。

这里有一个真实路径的例子:

mex main.cpp -IC:\boost_1_54_0 -LC:\boost_1_54_0\release -lthread

最后,对于您的情况,我建议您尝试:

mex main.cpp -IC:\Boost\1.55.0\VC\10.0\x64 -LC:\Boost\1.55.0\VC\10.0\x64\stage\lib -lthread

编辑:

我注意到定义 BOOST_ALL_NO_LIB 也有帮助,因为当我删除这个定义时我又得到了错误。要定义符号名称,您可以使用命令行选项 -D 所以只需添加 -DBOOST_ALL_NO_LIB

关于c++ - 使用 boost 编译 mexfunction 时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20727840/

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