Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    CommandLineRendering example in SDK

    SDK Help
    0
    8
    702
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      On 25/05/2015 at 06:33, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:    
      Platform:      
      Language(s) :

      ---------
      Hi
      I'm just starting out with c++ (coming from Python) so bare with me 🙂
      I'm trying to get the CommandLineRendering part of the SDK to work. In "main.ccp" theres a section under "PluginMessage" with code for command line rendering:

                   
      case C4DPL_COMMANDLINEARGS:   
           //sample implementation of command line rendering:   
           //void CommandLineRendering(C4DPL_CommandLineArgs* args);   
           //CommandLineRendering((C4DPL_CommandLineArgs* )data);   
           ..........   
      

      If i uncomment this like this, add "Bool RegisterCommandLineRendering();" to "main.h" and Build it:

                   
      case C4DPL_COMMANDLINEARGS:   
           //sample implementation of command line rendering:   
           void CommandLineRendering(C4DPL_CommandLineArgs* args);   
           CommandLineRendering((C4DPL_CommandLineArgs* )data);   
           ..........   
      

      I get theese errors:

        
      Undefined symbols for architecture x86_64:   
      "CommandLineRendering(C4DPL_CommandLineArgs* )", referenced from:   
            PluginMessage(int, void* ) in main.o   
      ld: symbol(s) not found for architecture x86_64   
      clang: error: linker command failed with exit code 1 (use -v to see invocation)   
      

      What am i doing wrong?

      Cheers
      Bonsak

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 25/05/2015 at 08:22, xxxxxxxx wrote:

        Hi,

        Originally posted by xxxxxxxx

                     
        case C4DPL_COMMANDLINEARGS:   
           //sample implementation of command line rendering:   
           //void CommandLineRendering(C4DPL_CommandLineArgs* args);   
           //CommandLineRendering((C4DPL_CommandLineArgs* )data);   
           ..........   
        

        If i uncomment this like this, add "Bool RegisterCommandLineRendering();" to "main.h" and Build it:

                     
        case C4DPL_COMMANDLINEARGS:   
           //sample implementation of command line rendering:   
           void CommandLineRendering(C4DPL_CommandLineArgs* args);   
           CommandLineRendering((C4DPL_CommandLineArgs* )data);   
           ..........   
        

        You've uncommented the line

                     
        //void CommandLineRendering(C4DPL_CommandLineArgs* args);   
        

        and you shouldn't. It's there in the comment to show the prototype of the function to call for the CommandLineRender example in commandlinerender.cpp.

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 25/05/2015 at 11:44, xxxxxxxx wrote:

          Hm, i must be doing something else wrong because only uncommenting "CommandLineRendering((C4DPL_CommandLineArgs* )data);" in main.ccp gives the same error on compile.

          Cheers
          Bonsak

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            On 26/05/2015 at 08:19, xxxxxxxx wrote:

            Hi Bonsak,

            The code in the SDK for the CommandLineRendering example needs some fixes and has to be changed.
            I'll try to explain the changes:

            In commandlinerender.cpp remove the "#if 0" macro at the beginning and its respective "#endif" at the end of the file:

             ~~#if 0~~
              
            #include "c4d.h"
            #include <string.h>
            #include <ctype.h>
            
             ~~#endif~~
            

            In the same file change the definition of CommandLineRendering() function from

            static void CommandLineRendering(C4DPL_CommandLineArgs* args)
            

            to

            void CommandLineRendering(C4DPL_CommandLineArgs* args)
            

            Add its declaration in main.h :

            Bool RegisterCustomDatatypeCustomGUI();
              
            void CommandLineRendering(C4DPL_CommandLineArgs* args);
              
            #endif // MAIN_H__
            

            And include "main.h" in commandlinerender.cpp:

            #include "main.h"
              
            Float lastProgressValue = -1.0;
            RENDERPROGRESSTYPE lastProgressType = RENDERPROGRESSTYPE_AFTERRENDERING;
            

            The SDK example for CommandLineRendering will be fixed and updated online soon in its GitHub PluginCafe repository.

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              On 26/05/2015 at 10:04, xxxxxxxx wrote:

              Thanks a alot! It's pretty intimidating starting out with C++ so your help is very much appreciated.
              I'm still getting an error on compile after changing what you suggested:

              commandlinerender.cpp:243:22: No viable conversion from 'Char *' (aka 'char *') to 'AutoGeFree<char>'
              

              But i just commented out the whole block from here (commandlinerender.cpp) :

              else if (!strcmp(args->argv[i], "-sdk_oformat"))
              

              This compiles fine and is perfectly ok for now.

              Cheers
              Bonsak

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

                On 26/05/2015 at 11:50, xxxxxxxx wrote:

                In "main.h" i think it needs to be something like:

                CommandLineRendering((C4DPL_CommandLineArgs* )data);
                

                to actually call the function in "commandline.ccp" not:

                void CommandLineRendering(C4DPL_CommandLineArgs* args);
                

                as that is the same as the declaration?

                Cheers
                Bonsak

                1 Reply Last reply Reply Quote 0
                • H
                  Helper
                  last edited by

                  On 26/05/2015 at 23:49, xxxxxxxx wrote:

                  Originally posted by xxxxxxxx

                  In "main.h" i think it needs to be something like:

                  CommandLineRendering((C4DPL_CommandLineArgs* )data);
                  

                  to actually call the function in "commandline.ccp" not:

                  void CommandLineRendering(C4DPL_CommandLineArgs* args);
                  

                  as that is the same as the declaration?

                  Yes in main.cpp you can remove the line with the function prototype for  CommandLineRendering() and just keep the line calling it.

                  1 Reply Last reply Reply Quote 0
                  • H
                    Helper
                    last edited by

                    On 27/05/2015 at 00:57, xxxxxxxx wrote:

                    Thanks! It works fine on the command line now. But it crashes cinema when i start c4d in gui mode with commandlinerender plugin in the plugin dir. I'll investigate more.

                    Cheers
                    Bonsak

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post