How to use tcl apis in a c code

后端 未结 2 1762
隐瞒了意图╮
隐瞒了意图╮ 2021-01-24 10:42

I want to use some of the functionalities(APIs) of my tcl code in another \"c\" code file. But i am not getting how to do that especiallly how to link them. For that i have take

2条回答
  •  孤街浪徒
    2021-01-24 11:29

    I think i have sloved it out. You were correct. The problem was with the include method that i was using. I have the files tcl.h, tclDecls.h and tclPlatDecls.h included in the c code but these files were not existing in the path /usr/include so i was copying these files to that directory, may be it was not a proper way to do. Finally i have not copied those files to /usr/include and gave the include path while compiling. I have created executable and it is givingthe proper result on terminal. Thanks for your help.

    Here is the exact c code i am using :

    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    
    int main (int argc, char **argv) {
    Tcl_Interp *interp;
    int code;
    char *result;
    
    printf("inside main function \n");
    //    Tcl_InitStubs(interp, "8.5", 0);
    Tcl_FindExecutable(argv[0]);
    interp = Tcl_CreateInterp();
    code = Tcl_Eval(interp, "source simple_addition.tcl; add_two_nos");
    
    /* Retrieve the result... */
    result = Tcl_GetString(Tcl_GetObjResult(interp));
    
    /* Check for error! If an error, message is result. */
    if (code == TCL_ERROR) {
        fprintf(stderr, "ERROR in script: %s\n", result);
        exit(1);
    }
    
    /* Print (normal) result if non-empty; we'll skip handling encodings for now */
    if (strlen(result)) {
        printf("%s\n", result);
    }
    
    /* Clean up */
    Tcl_DeleteInterp(interp);
    exit(0);
    

    }

    And to compile this code and to generate executable file i am using below command :

    gcc simple_addition_wrapper_new.c -I/usr/include/tcl8.5/ -ltcl8.5 -o simple_addition_op
    

    I have executed the file simple_addition_op and got below result which was proper

    inside main function 
    c is 30 .......
    

    My special thanks to Donal Fellows and Johannes

提交回复
热议问题