我有一个TCL应用程序,它只能在Windows上运行,并使用twapi来访问某些特定于Windows的功能。
现在我需要调用自定义DLL中的一些C函数。
我知道我可以使用twapi::load_library
加载DLL(应该与LoadLibraryEx()
相同)但我无法理解如何在DLL本身内调用函数!
我错过了什么?
我宁愿避免使用其他依赖项(例如critcl
)并避免必须在tcl扩展中转换当前dll(例如通过SWIG),因此仅使用twapi解决方案会非常有用!
答案 0 :(得分:1)
TWAPI似乎没有提供GetProcAddress
的任何公共绑定(Windows API函数用于从名称到DLL中函数的地址)。
将ffidl用于简单的API(即没有回调的地方)或critcl(适用于所有类型的API,包括那些带有回调的API,因为它可以进行更广泛的代码生成;但需要付出更多努力)。
答案 1 :(得分:1)
twapi的load_library命令用于操作dll中的资源(字符串表,图标等)。它不是用于调用dll中的函数,因为Donal指出,它需要编组和一些代码生成。
答案 2 :(得分:0)
您似乎必须使用ffidl来完成这项工作。