我想我已經解決了它。你是對的。問題在於我使用的包含方法。我在c代碼中包含tcl.h,tclDecls.h和tclPlatDecls.h文件,但這些文件不在路徑/ usr/include中,因此我將這些文件複製到該目錄,可能不是合適的辦法。最後,我還沒有將這些文件複製到/ usr/include,並在編譯時給出了包含路徑。我創建了可執行文件,它在終端上給出了正確的結果。謝謝你的幫助。
這裏是確切的C代碼我使用:
#include <tcl.h>
#include <tclDecls.h>
#include <tclPlatDecls.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
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);
}
並編輯成代碼,並生成可執行文件我用下面的命令:
gcc simple_addition_wrapper_new.c -I/usr/include/tcl8.5/ -ltcl8.5 -o simple_addition_op
我已經執行文件simple_addition_op,並得到了正確的結果
inside main function
c is 30 .......
我特別感謝Donal Fellows和Johannes
對不起。我現在已經接受了幾個對我非常有幫助的回覆。 – user1497818
任何人都可以請回復這個。這對我來說非常緊迫 – user1497818