How to you build a MEX function with Boost Libraries?
I'm trying to use the Boost Libraries to write a multi-threaded MEX function. I've installed the Boost Libraries and tested them using Visual Studios. I wrote the following MEX function and tried to build it in the MATLAB console:
#include "mex.h"
#include <boost/filesystem.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/thread/thread.hpp>
#include <boost/lockfree/spsc_queue.hpp>
#include <boost/atomic.hpp>
void mexFunction(int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs)
{
}
This was the output
>> mex simpleBoostExample.cpp -IC:FolderOtherFolderMATLABFilesboostboost_1_67_0
Building with 'Microsoft Visual C++ 2017'.
Error using mex
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc141-mt-x64-1_67.lib'
Now I've already added the Boost Library files to the MATLAB PATH like this:
path(oldpath, 'C:FolderOtherFolderMATLABFilesboostboost_1_67_0')
setenv('PATH', [getenv('PATH') ';C:FolderOtherFolderMATLABFilesboostboost_1_67_0stagelib']);
So I'm not sure what I'm missing.
c++ matlab boost
add a comment |
I'm trying to use the Boost Libraries to write a multi-threaded MEX function. I've installed the Boost Libraries and tested them using Visual Studios. I wrote the following MEX function and tried to build it in the MATLAB console:
#include "mex.h"
#include <boost/filesystem.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/thread/thread.hpp>
#include <boost/lockfree/spsc_queue.hpp>
#include <boost/atomic.hpp>
void mexFunction(int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs)
{
}
This was the output
>> mex simpleBoostExample.cpp -IC:FolderOtherFolderMATLABFilesboostboost_1_67_0
Building with 'Microsoft Visual C++ 2017'.
Error using mex
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc141-mt-x64-1_67.lib'
Now I've already added the Boost Library files to the MATLAB PATH like this:
path(oldpath, 'C:FolderOtherFolderMATLABFilesboostboost_1_67_0')
setenv('PATH', [getenv('PATH') ';C:FolderOtherFolderMATLABFilesboostboost_1_67_0stagelib']);
So I'm not sure what I'm missing.
c++ matlab boost
1
(Just some addutional info, since you’ve alrwady have a correct answer.) The MATLAB path is only for MATLAB to find functions you call (directories containing M-files and MEX-files), not for header files or libraries or anything related to compiling MEX-files. Thesetenv
line is useful only if the directory contains a DLL that is used by a MEX-file. It is not useful for static linking.
– Cris Luengo
Jan 1 at 22:15
add a comment |
I'm trying to use the Boost Libraries to write a multi-threaded MEX function. I've installed the Boost Libraries and tested them using Visual Studios. I wrote the following MEX function and tried to build it in the MATLAB console:
#include "mex.h"
#include <boost/filesystem.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/thread/thread.hpp>
#include <boost/lockfree/spsc_queue.hpp>
#include <boost/atomic.hpp>
void mexFunction(int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs)
{
}
This was the output
>> mex simpleBoostExample.cpp -IC:FolderOtherFolderMATLABFilesboostboost_1_67_0
Building with 'Microsoft Visual C++ 2017'.
Error using mex
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc141-mt-x64-1_67.lib'
Now I've already added the Boost Library files to the MATLAB PATH like this:
path(oldpath, 'C:FolderOtherFolderMATLABFilesboostboost_1_67_0')
setenv('PATH', [getenv('PATH') ';C:FolderOtherFolderMATLABFilesboostboost_1_67_0stagelib']);
So I'm not sure what I'm missing.
c++ matlab boost
I'm trying to use the Boost Libraries to write a multi-threaded MEX function. I've installed the Boost Libraries and tested them using Visual Studios. I wrote the following MEX function and tried to build it in the MATLAB console:
#include "mex.h"
#include <boost/filesystem.hpp>
#include <boost/lambda/bind.hpp>
#include <boost/thread/thread.hpp>
#include <boost/lockfree/spsc_queue.hpp>
#include <boost/atomic.hpp>
void mexFunction(int nlhs, mxArray *plhs, int nrhs, const mxArray *prhs)
{
}
This was the output
>> mex simpleBoostExample.cpp -IC:FolderOtherFolderMATLABFilesboostboost_1_67_0
Building with 'Microsoft Visual C++ 2017'.
Error using mex
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc141-mt-x64-1_67.lib'
Now I've already added the Boost Library files to the MATLAB PATH like this:
path(oldpath, 'C:FolderOtherFolderMATLABFilesboostboost_1_67_0')
setenv('PATH', [getenv('PATH') ';C:FolderOtherFolderMATLABFilesboostboost_1_67_0stagelib']);
So I'm not sure what I'm missing.
c++ matlab boost
c++ matlab boost
edited Jan 1 at 19:53
Crystal Pritzker
asked Jan 1 at 17:03
Crystal PritzkerCrystal Pritzker
163210
163210
1
(Just some addutional info, since you’ve alrwady have a correct answer.) The MATLAB path is only for MATLAB to find functions you call (directories containing M-files and MEX-files), not for header files or libraries or anything related to compiling MEX-files. Thesetenv
line is useful only if the directory contains a DLL that is used by a MEX-file. It is not useful for static linking.
– Cris Luengo
Jan 1 at 22:15
add a comment |
1
(Just some addutional info, since you’ve alrwady have a correct answer.) The MATLAB path is only for MATLAB to find functions you call (directories containing M-files and MEX-files), not for header files or libraries or anything related to compiling MEX-files. Thesetenv
line is useful only if the directory contains a DLL that is used by a MEX-file. It is not useful for static linking.
– Cris Luengo
Jan 1 at 22:15
1
1
(Just some addutional info, since you’ve alrwady have a correct answer.) The MATLAB path is only for MATLAB to find functions you call (directories containing M-files and MEX-files), not for header files or libraries or anything related to compiling MEX-files. The
setenv
line is useful only if the directory contains a DLL that is used by a MEX-file. It is not useful for static linking.– Cris Luengo
Jan 1 at 22:15
(Just some addutional info, since you’ve alrwady have a correct answer.) The MATLAB path is only for MATLAB to find functions you call (directories containing M-files and MEX-files), not for header files or libraries or anything related to compiling MEX-files. The
setenv
line is useful only if the directory contains a DLL that is used by a MEX-file. It is not useful for static linking.– Cris Luengo
Jan 1 at 22:15
add a comment |
1 Answer
1
active
oldest
votes
Use -L
and -l
to link with dynamic object library libname in (optional) libfolder.
-LC:FolderOtherFolderMATLABFilesboostboost_1_67_0 -llibboost_filesystem-vc141-mt-x64-1_67.lib
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53997323%2fhow-to-you-build-a-mex-function-with-boost-libraries%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Use -L
and -l
to link with dynamic object library libname in (optional) libfolder.
-LC:FolderOtherFolderMATLABFilesboostboost_1_67_0 -llibboost_filesystem-vc141-mt-x64-1_67.lib
add a comment |
Use -L
and -l
to link with dynamic object library libname in (optional) libfolder.
-LC:FolderOtherFolderMATLABFilesboostboost_1_67_0 -llibboost_filesystem-vc141-mt-x64-1_67.lib
add a comment |
Use -L
and -l
to link with dynamic object library libname in (optional) libfolder.
-LC:FolderOtherFolderMATLABFilesboostboost_1_67_0 -llibboost_filesystem-vc141-mt-x64-1_67.lib
Use -L
and -l
to link with dynamic object library libname in (optional) libfolder.
-LC:FolderOtherFolderMATLABFilesboostboost_1_67_0 -llibboost_filesystem-vc141-mt-x64-1_67.lib
answered Jan 1 at 21:31


João PauloJoão Paulo
1,87212047
1,87212047
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53997323%2fhow-to-you-build-a-mex-function-with-boost-libraries%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
(Just some addutional info, since you’ve alrwady have a correct answer.) The MATLAB path is only for MATLAB to find functions you call (directories containing M-files and MEX-files), not for header files or libraries or anything related to compiling MEX-files. The
setenv
line is useful only if the directory contains a DLL that is used by a MEX-file. It is not useful for static linking.– Cris Luengo
Jan 1 at 22:15