我已经使用 tcl 创建了一个 GUI。我想让 tcl 代码的一些核心功能可供任何支持 dll 的程序使用。为此,我采用了一个非常简单的 tcl 代码示例,它添加了两个整数,并且我编写了 ac 包装函数来使用此功能。这对我有用。现在我如何为这两个 c 和 tcl 文件创建一个 dll,以便任何程序都可以通过简单地加载 dll 来使用这个附加功能。
这是我的简单 tcl 代码:
/* Filename : simple_addition.tcl */
#!/usr/bin/env tclsh8.5
proc add_two_nos { } {
set a 10
set b 20
set c [expr { $a + $b } ]
puts " c is $c ......."
}
这是我的 c 包装函数,它使用上述 tcl 附加功能:
#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_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);
}
这个 c 包装器对我来说工作得很好,并给出了正确的结果。
现在我想创建一个 dll 文件,这样如果我将该 dll 包含到任何支持 dll 的程序中,它应该能够使用上述 tcl 代码的这个附加功能。谁能告诉我我能做到的方式。请帮我。我是这个 dll 概念的新手。