Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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

    UB compiling = HELP!

    SDK Help
    0
    14
    1.0k
    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

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 14/12/2006 at 18:10, xxxxxxxx wrote:

      Hi Michael,

      sorry, I have no clue which part I could put here as the errors are really arbitrary. I see no relation to any code I am actually using.

      But I tried the typename declaration as you propose and also changed the template class accordingly. Makes no difference at all.

      I rather think it´s a problem of my file structure.
      You must think of it as this:

      matrixclass.h (template class)
      arrayclass.h (template class)
      container.h (template class)
      vectorclass.h
      objectclass.h
      master.h

      the problem is this, the matrixclass is used within the container, but the matrixclass also needs/gets passed a pointer to the master and container.

      the container is used within the master but also needs/gets passed a pointer to the master and uses the arrayclass.

      the objectclass needs a container, master and matrix.

      And so on, so it´s really a little chaotic. The master is a solver class and is actually the only class that creates all other objects (i.e. creates container and objects, container creates array etc.).

      However, I cannot include the master.h in any of the other files as this would mean it includes itself as all other files are included in master.h.

      Hmm, you see the problem? I am not absolutely sure if it´s the problem but it sounds plausible.

      Any idea?

      I try to narrow down the problem.
      Btw. the SDK compiles just fine and my project without the part we are currently talking about compiles also just fine. So it´s really up to the namespace or the file structure I think. 😕

      Samir

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

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 15/12/2006 at 03:26, xxxxxxxx wrote:

        Hmm... i assume you have inline and template member function definition in header files. I think the compiler needs to know the full declaration of all types that appear there. If you have only forward declaration it probably generates an error.

        Does it work when you put everything in a single .h file ?

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

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 15/12/2006 at 07:30, xxxxxxxx wrote:

          I will try a one file solutin (should work, but of course not desired). However, it´s not C++ Standard afaik that the compiler needs the full declaration. He only needs it when it needs to know how much memory the class requires, but for a pointer that´s not necessary as the compiler should think the class is properly defined.

          Hmm, but he probably needs the declaration for member function calls of that instance...hmm, ok. that could be a problem.

          btw. yes, all my class defintions are in header files, but also all members are declared and defined in the class body. So maybe I should move the function calls of the critical classes to a source file?! Man, why didn´t I think of that before? 😄

          Thank you Michael! I will let you know if it worked out!
          Best
          Samir

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

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 18/12/2006 at 08:29, xxxxxxxx wrote:

            I would like to know. Btw there is some helpfull info on template issues http://www.parashift.com/c++-faq-lite/

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

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 22/12/2006 at 16:24, xxxxxxxx wrote:

              Thanks for the link Michael. I will have a look at that one!

              For now I moved all the namespace class defintions into 1 header file and almost all implementations into source files.

              This compiles fine in VC++ until it tries to link the libraries. I then get "unresolved external symbol". 😞
              And this for template class definitions in a source file (implemented like below).

              My header looks like this:

              #ifndef _FLUID_HEADER_H_  
              #define _FLUID_HEADER_H_  
                
              #include "c4d.h"  
              #include "../dpitlibraries/dpit_tools.h"  
              #include "dpit_fluidobj.h"  
              #include "dpit_fluidsim.h"  
              #include <vector>  
                
              // forward declaration  
              namespace Fluid  
              {  
                   class xyzabcundco;  
              }  
                
              #include "fluidvector.h"  
                
              namespace Fluid  
              {  
                      class xyzabcundco;  
              }
              

              and my cpp files look like this, with an example implementation of a template:

              #include "fluid_header.h"  
              using namespace Fluid;  
                
              template <typename T>  
              bool FSTGrid<T>::ValidPos(const int x, const int y, const int z) const  
              {}
              

              As I said, it compiles fine, but the final linking gives me the unresolved external symbol errors.

              Any idea? Will look into that FAQ, maybe I find something.

              From one error to the next, love it. 🙂
              Thanks!

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

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 22/12/2006 at 16:34, xxxxxxxx wrote:

                Ha, ok, found a possible problem in that FAQ! Cool. Love the FAQ btw.. Very good overview for several issues. 🙂

                Will report back when I retried.

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

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 22/12/2006 at 16:50, xxxxxxxx wrote:

                  ok, so when it´s all in one header file, it compiles fine in VC++. Will now try if this compiles on MAC too, so I can at least compile a working version of my code.

                  Then will try another thing, because all the template implementations in one header file...phew, looks awful, especially when you have soooo much code, and looks even more terrible when I think I must work with them! 😞

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

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 11/01/2007 at 14:42, xxxxxxxx wrote:

                    Hey, just wanted to report. I have now put all the namespace class declarations into one header file. I define all template class members in the header file too. According to C++ it isn´t supported otherwise. non-template classes I still define in .cpp files.

                    And, swoop, that compiles! 🙂

                    Anyway, having them within one header file is really annoying, but well, it compiles. That´s the most important thing currently.

                    So thanks again for the help to both of you!

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

                      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                      On 12/01/2007 at 07:30, xxxxxxxx wrote:

                      Hi you're welcome and thanks for the info. Glad it finally works 😉

                      Perhaps you could still split the header file into several. You just have to make a "super" header which includes all the parts in the right order. Not that great solution but maybe easier to work with..

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

                        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                        On 14/01/2007 at 14:33, xxxxxxxx wrote:

                        thanks Michael. I will do so, once DPIT is released. I also think it´s easier to work with several files. 🙂

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