Kaynağa Gözat

BUG: Generated call to Tcl_CreateCommand for vtkCommand should cast pointer to extern "C" version.

Brad King 23 yıl önce
ebeveyn
işleme
20b1d940a4
1 değiştirilmiş dosya ile 10 ekleme ve 1 silme
  1. 10 1
      Source/cmVTKWrapTclCommand.cxx

+ 10 - 1
Source/cmVTKWrapTclCommand.cxx

@@ -229,6 +229,13 @@ bool cmVTKWrapTclCommand::WriteInit(const char *kitName,
   
   fprintf(fout,"#include \"vtkTclUtil.h\"\n");
   
+  fprintf(fout,
+          "extern \"C\"\n"
+          "{\n"
+          "  typedef int (*vtkTclCommandType)(ClientData, Tcl_Interp *,int, char *[]);\n"
+          "}\n"
+          "\n");
+
   for (i = 0; i < classes.size(); i++)
     {
     fprintf(fout,"int %sCommand(ClientData cd, Tcl_Interp *interp,\n             int argc, char *argv[]);\n",classes[i].c_str());
@@ -300,7 +307,9 @@ bool cmVTKWrapTclCommand::WriteInit(const char *kitName,
             "  Tcl_CreateExitHandler(vtkCommonDeleteAssocData,(ClientData *)info);\n");
 
     /* create special vtkCommand command */
-    fprintf(fout,"  Tcl_CreateCommand(interp,(char *) \"vtkCommand\",vtkCommand,\n		    (ClientData *)NULL, NULL);\n\n");
+    fprintf(fout,"  Tcl_CreateCommand(interp,(char *) \"vtkCommand\",\n"
+                 "                    reinterpret_cast<vtkTclCommandType>(vtkCommand),\n"
+                 "                    (ClientData *)NULL, NULL);\n\n");
     }
   
   for (i = 0; i < m_Commands.size(); i++)