How to you build a MEX function with Boost Libraries?












0















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.










share|improve this question




















  • 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
















0















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.










share|improve this question




















  • 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














0












0








0








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.










share|improve this question
















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






share|improve this question















share|improve this question













share|improve this question




share|improve this question








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. 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














  • 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








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












1 Answer
1






active

oldest

votes


















2














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







share|improve this answer























    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
    });


    }
    });














    draft saved

    draft discarded


















    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









    2














    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







    share|improve this answer




























      2














      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







      share|improve this answer


























        2












        2








        2







        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







        share|improve this answer













        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








        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 1 at 21:31









        João PauloJoão Paulo

        1,87212047




        1,87212047
































            draft saved

            draft discarded




















































            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.




            draft saved


            draft discarded














            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





















































            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







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

            Npm cannot find a required file even through it is in the searched directory