Cinema not loading plugin with global string



  • On 21/05/2013 at 09:20, xxxxxxxx wrote:

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

    ---------
    Why does Cinema not load a plugin file with a String variable in the global scope? This is very
    annoying.

    #include <c4d.h>
      
    String g_string;
      
    Bool PluginStart() {
    	return TRUE;
    }
      
    // ...
    


  • On 21/05/2013 at 11:38, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

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

    ---------
    </ADDRESS> Why does Cinema not load a plugin file with a String variable in the global scope? This is very
    annoying.

    #include <c4d.h>[/DIV][DIV][/DIV][DIV]String g_string;[/DIV][DIV][/DIV][DIV]Bool PluginStart() {[/DIV][DIV]<span ="Apple-tab-span" style="white-space:pre">     </span>return TRUE;[/DIV][DIV]}[/DIV][DIV][/DIV][DIV]// ...
    

    Because the C4D OS pointer isn't valid before reaching PluginStart. Unfortunately non POD datatypes (http://www.cplusplus.com/reference/type_traits/is_pod/) need to allocate memory and for static global variables the compiler will try create them before you've reached PluginStart.

    Best regards,

    Wilfried



  • On 23/05/2013 at 06:26, xxxxxxxx wrote:

    Thanks, Wilfried.

    -Nik



  • On 23/05/2013 at 10:27, xxxxxxxx wrote:

    The first question is why do you need global C4D::String ?

    Because C4DOS is NULL at the time global variables are initialized it is not possible without a change / hack on C4D::String class.



  • On 23/05/2013 at 10:40, xxxxxxxx wrote:

    I don't need this in one of my plugins, but I needed it for a quick test. I used a pointer instead
    and was even too lazy to free it in PluginEnd().

    See https://plugincafe.maxon.net/topic/7185/8213_storing-objects-in-a-list&PID=34181#34181


Log in to reply