Вызов функции DLL из tcl через twapi - PullRequest
0 голосов
/ 30 марта 2012

У меня есть приложение TCL, которое предназначено для работы только в Windows и использует twapi для доступа к некоторым функциям, специфичным для Windows.

Теперь мне нужно вызвать некоторую функцию C, которая находится в пользовательской DLL.

Я знаю, что могу загрузить DLL с помощью twapi::load_library (должно быть то же самое, что и LoadLibraryEx()), но я не могу понять, как вызвать функцию внутри самой DLL!

Что я пропустил?

Я бы предпочел избегать других зависимостей (таких как, например, critcl) и избегать преобразования текущего dll в расширение tcl (например, через SWIG), так что решение только для twapi было бы действительно полезным! *

Ответы [ 3 ]

1 голос
/ 30 марта 2012

TWAPI, по-видимому, не обеспечивает общедоступную привязку GetProcAddress (функция Windows API для перехода от имени к адресу функции в DLL).

Используйте ffidl для простых API (т. е. там, где нет обратных вызовов) или critcl (для всех видов API, в том числе с обратными вызовами, потому что он может выполнять гораздо более обширную генерацию кода, хотя и требует больше усилий).

1 голос
/ 07 апреля 2012

Команда load_library twapi предназначена для манипулирования ресурсами в DLL (таблицы строк, значок и т. Д.).Он не предназначен для вызова функций в dll, поскольку, как указывает Донал, требуется сортировка и генерация кода.

0 голосов
/ 30 марта 2012

Похоже, вам придется использовать ffidl , чтобы выполнить работу.

...