我需要一个Tcl回调例程的地址,所以我可以将它(使用ffidl::callout
)传递给C DLL的SetCallback例程,即C原型是:
int SetCallback(long lAddress);
答案 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]