如何获得Tcl proc的地址?

时间:2014-01-18 03:02:49

标签: tcl ffi

我需要一个Tcl回调例程的地址,所以我可以将它(使用ffidl::callout)传递给C DLL的SetCallback例程,即C原型是:

 int SetCallback(long lAddress);

1 个答案:

答案 0 :(得分:1)

好吧,你应该正确声明标注:

::ffidl::callout SetCallback {pointer-proc} int [ffidl::symbol ....]

重要的是您将参数声明为pointer-proc。这允许您传递proc的名称(您必须先将::ffidl::callback注册)作为参数。

该proc的实际地址通常不相关,您可能永远不会看到它。

如果你真的想要proc的地址(这是罕见的),那么你可以使用

::ffidl::callout get_address {pointer-proc} pointer [::ffidl::symbol [::ffidl::find-lib ffidl] ffidl_pointer_pun]