我需要在Tcl的::ffidl::symbol
语句中卸载由::ffidl::callout
加载的DLL。
我可以使用::twapi::FreeLibrary
,但它需要DLL的加载地址,ffidl似乎没有公开。
答案 0 :(得分:0)
卸载库(任何库)的问题是可能存在悬空指针。这会在您的代码中留下一系列小地雷。所以 要注意!
要破解它,可以通过使用ffidl来调用Tcl_LoadFile
来获取库的地址,这是(基本上)ffidl首先用来加载库的Tcl API,{{1这是围绕你想要的卸载功能的包装器。
Tcl_FSUnloadFile
(警告!之前我没有使用过ffidl,这是未经测试的代码!我实际上 使用Critcl而不是这样,因为我觉得写一点比较容易在embedded-C中粘贴代码。)