Using Matlab C++ compiler to convert C++ code into Matlab









up vote
0
down vote

favorite












I am trying to use the MinGW-w64 Compiler in Matlab. I have it installed and Matlab recognizes the compiler. My question is 2-fold:



1) I cannot get it to compile all the .c code into a header. I typed



 mex -output HTKToolsFolder *.c
Building with 'MinGW64 Compiler (C)'.


And got



Error using mex
C:UsersusernameDocumentsMATLABMatlabHTKhtkHTKToolsHBuild.c:39:46: fatal error: HShell.h: No such
file or directory
#include "HShell.h" /* HMM ToolKit Modules */
^
compilation terminated.


I'm not sure what the .h extension is. That file is located in another folder but if I tell Matlab to compile .h files it doesn't recognize the file extension



mex -output hfilescompiled *.h
Error using mex
Unknown file extension '.h'.


If it helps, HShell.h is called by some of the .c files



The second question is, once question #1 is answered, can I apply this to a directory with many folders of C++ code? Or do I have to use the mex command for every single folder?



I've watched the Matlab tutorial: https://www.mathworks.com/solutions/matlab-and-c.html and I've also read the Matlab help files for mex and loadlibrary.



Any advice is greatly appreciated as this is the first time I've mixed C++ and Matlab. Thanks in advance!










share|improve this question



























    up vote
    0
    down vote

    favorite












    I am trying to use the MinGW-w64 Compiler in Matlab. I have it installed and Matlab recognizes the compiler. My question is 2-fold:



    1) I cannot get it to compile all the .c code into a header. I typed



     mex -output HTKToolsFolder *.c
    Building with 'MinGW64 Compiler (C)'.


    And got



    Error using mex
    C:UsersusernameDocumentsMATLABMatlabHTKhtkHTKToolsHBuild.c:39:46: fatal error: HShell.h: No such
    file or directory
    #include "HShell.h" /* HMM ToolKit Modules */
    ^
    compilation terminated.


    I'm not sure what the .h extension is. That file is located in another folder but if I tell Matlab to compile .h files it doesn't recognize the file extension



    mex -output hfilescompiled *.h
    Error using mex
    Unknown file extension '.h'.


    If it helps, HShell.h is called by some of the .c files



    The second question is, once question #1 is answered, can I apply this to a directory with many folders of C++ code? Or do I have to use the mex command for every single folder?



    I've watched the Matlab tutorial: https://www.mathworks.com/solutions/matlab-and-c.html and I've also read the Matlab help files for mex and loadlibrary.



    Any advice is greatly appreciated as this is the first time I've mixed C++ and Matlab. Thanks in advance!










    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I am trying to use the MinGW-w64 Compiler in Matlab. I have it installed and Matlab recognizes the compiler. My question is 2-fold:



      1) I cannot get it to compile all the .c code into a header. I typed



       mex -output HTKToolsFolder *.c
      Building with 'MinGW64 Compiler (C)'.


      And got



      Error using mex
      C:UsersusernameDocumentsMATLABMatlabHTKhtkHTKToolsHBuild.c:39:46: fatal error: HShell.h: No such
      file or directory
      #include "HShell.h" /* HMM ToolKit Modules */
      ^
      compilation terminated.


      I'm not sure what the .h extension is. That file is located in another folder but if I tell Matlab to compile .h files it doesn't recognize the file extension



      mex -output hfilescompiled *.h
      Error using mex
      Unknown file extension '.h'.


      If it helps, HShell.h is called by some of the .c files



      The second question is, once question #1 is answered, can I apply this to a directory with many folders of C++ code? Or do I have to use the mex command for every single folder?



      I've watched the Matlab tutorial: https://www.mathworks.com/solutions/matlab-and-c.html and I've also read the Matlab help files for mex and loadlibrary.



      Any advice is greatly appreciated as this is the first time I've mixed C++ and Matlab. Thanks in advance!










      share|improve this question















      I am trying to use the MinGW-w64 Compiler in Matlab. I have it installed and Matlab recognizes the compiler. My question is 2-fold:



      1) I cannot get it to compile all the .c code into a header. I typed



       mex -output HTKToolsFolder *.c
      Building with 'MinGW64 Compiler (C)'.


      And got



      Error using mex
      C:UsersusernameDocumentsMATLABMatlabHTKhtkHTKToolsHBuild.c:39:46: fatal error: HShell.h: No such
      file or directory
      #include "HShell.h" /* HMM ToolKit Modules */
      ^
      compilation terminated.


      I'm not sure what the .h extension is. That file is located in another folder but if I tell Matlab to compile .h files it doesn't recognize the file extension



      mex -output hfilescompiled *.h
      Error using mex
      Unknown file extension '.h'.


      If it helps, HShell.h is called by some of the .c files



      The second question is, once question #1 is answered, can I apply this to a directory with many folders of C++ code? Or do I have to use the mex command for every single folder?



      I've watched the Matlab tutorial: https://www.mathworks.com/solutions/matlab-and-c.html and I've also read the Matlab help files for mex and loadlibrary.



      Any advice is greatly appreciated as this is the first time I've mixed C++ and Matlab. Thanks in advance!







      c++ matlab compiler-errors mex






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 8 at 22:12









      Cris Luengo

      16.9k51847




      16.9k51847










      asked Nov 8 at 21:25









      A. DeAngelis

      1




      1






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          2
          down vote













          You want to do this:



          mex HBuild.c -IC:PathToHFiles


          where C:PathToHFiles is whatever the directory is that contains HShell.h.



          This will create a MEX-file called HBuild (assuming that HBuild.c contains a mexFunction function, and no other dependencies exist).



          If you do mex *.c, then all C source files in that directory will be combined into a single MEX-file. I doubt that this is what you want. You need to call mex for each of the MEX-files you want to build. Each MEX-file will become a function available within MATLAB.






          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',
            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%2f53216367%2fusing-matlab-c-compiler-to-convert-c-code-into-matlab%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








            up vote
            2
            down vote













            You want to do this:



            mex HBuild.c -IC:PathToHFiles


            where C:PathToHFiles is whatever the directory is that contains HShell.h.



            This will create a MEX-file called HBuild (assuming that HBuild.c contains a mexFunction function, and no other dependencies exist).



            If you do mex *.c, then all C source files in that directory will be combined into a single MEX-file. I doubt that this is what you want. You need to call mex for each of the MEX-files you want to build. Each MEX-file will become a function available within MATLAB.






            share|improve this answer
























              up vote
              2
              down vote













              You want to do this:



              mex HBuild.c -IC:PathToHFiles


              where C:PathToHFiles is whatever the directory is that contains HShell.h.



              This will create a MEX-file called HBuild (assuming that HBuild.c contains a mexFunction function, and no other dependencies exist).



              If you do mex *.c, then all C source files in that directory will be combined into a single MEX-file. I doubt that this is what you want. You need to call mex for each of the MEX-files you want to build. Each MEX-file will become a function available within MATLAB.






              share|improve this answer






















                up vote
                2
                down vote










                up vote
                2
                down vote









                You want to do this:



                mex HBuild.c -IC:PathToHFiles


                where C:PathToHFiles is whatever the directory is that contains HShell.h.



                This will create a MEX-file called HBuild (assuming that HBuild.c contains a mexFunction function, and no other dependencies exist).



                If you do mex *.c, then all C source files in that directory will be combined into a single MEX-file. I doubt that this is what you want. You need to call mex for each of the MEX-files you want to build. Each MEX-file will become a function available within MATLAB.






                share|improve this answer












                You want to do this:



                mex HBuild.c -IC:PathToHFiles


                where C:PathToHFiles is whatever the directory is that contains HShell.h.



                This will create a MEX-file called HBuild (assuming that HBuild.c contains a mexFunction function, and no other dependencies exist).



                If you do mex *.c, then all C source files in that directory will be combined into a single MEX-file. I doubt that this is what you want. You need to call mex for each of the MEX-files you want to build. Each MEX-file will become a function available within MATLAB.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 8 at 22:16









                Cris Luengo

                16.9k51847




                16.9k51847



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53216367%2fusing-matlab-c-compiler-to-convert-c-code-into-matlab%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

                    𛂒𛀶,𛀽𛀑𛂀𛃧𛂓𛀙𛃆𛃑𛃷𛂟𛁡𛀢𛀟𛁤𛂽𛁕𛁪𛂟𛂯,𛁞𛂧𛀴𛁄𛁠𛁼𛂿𛀤 𛂘,𛁺𛂾𛃭𛃭𛃵𛀺,𛂣𛃍𛂖𛃶 𛀸𛃀𛂖𛁶𛁏𛁚 𛂢𛂞 𛁰𛂆𛀔,𛁸𛀽𛁓𛃋𛂇𛃧𛀧𛃣𛂐𛃇,𛂂𛃻𛃲𛁬𛃞𛀧𛃃𛀅 𛂭𛁠𛁡𛃇𛀷𛃓𛁥,𛁙𛁘𛁞𛃸𛁸𛃣𛁜,𛂛,𛃿,𛁯𛂘𛂌𛃛𛁱𛃌𛂈𛂇 𛁊𛃲,𛀕𛃴𛀜 𛀶𛂆𛀶𛃟𛂉𛀣,𛂐𛁞𛁾 𛁷𛂑𛁳𛂯𛀬𛃅,𛃶𛁼

                    Edmonton

                    Crossroads (UK TV series)