Re-build plugin for R20 - missing file "delegate.h"
-
Hi,
when trying to recompile a plugin for R20 using the latest "cinema.framework" I get a "missing file" error (on Mac):/frameworks/cinema.framework/source/c4d_customgui/customgui_description.h:15:10: 'c4d_misc/datastructures/delegate.h' file not found
This file is referenced from other R20 SDK's includes. Indeed, such a file does NOT exist at that location. The parent include looks like this:
#ifdef USE_API_MAXON #include "maxon/delegate.h" #else #include "c4d_misc/datastructures/delegate.h" #endif
I have not defined
USE_API_MAXON
in my build because I don't use the new maxon API. Defining it anyways gives me tons of syntax errors due to old R19 code.
Any hints? -
Hi steve_r,
it seems like you're attempting to create hybrid plugins mixing classic API with new API. Could you please check that
C4D=true
is actually used in your projectdefinition.txt as reported in the Project Tool section of the C++ API docs?Best, Riccardo
-
@r_gigante No, the
C4D=true
was not set in the project file. Once I added it I noticed that it also enablesUSE_API_MAXON
, and now I get tons of R19 syntax errors back! Seems there is no way around fixing those (which I was thinking in the first place -
Hi steve_r,
porting pre-R20 plugins to R20 definitively requires to review the code and deliver the changes needed to make it nicely work with the new API structure and syntax.
I warmly suggest to run through all of them and fix accordingly to what stated on the Plugin Migration section of the Cinema API C++ documentation.Last but not least, consider that a few of the issue might be due to code-style strictness level: in such case you can consider to lower the code-style strictness (see style-check) for an initial transition and concentrate on design issues.
Best, Riccardo
-
@r_gigante I wonder, is it REQUIRED to set
USE_API_MAXON
in my project when re-compiling old plugins for R20? It seems that, if not set, certain #includes from cinema.framework do not compile. -
Hi Steve,
having the
USE_MAXON_API
being defined - actually usingC4D=true
in projectdefinition.txt - is required in order to be sure that all the cinema.framework classes are properly compiled. Although there could be situations where some cinema.framework classes can work without that define, we highly discourage this approach since you can end up in situations where the code compiles until you include that specific class which indeed needs that define (which it's already happening in that case).If specifying
C4D=true
actually brings too much pain, please open a new thread and let's proactively discuss the issues your code is facing and let's get rid of them.Best, Riccardo