Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Как подключить wsock32.dll ?
 
Windows 10 64bit/Office2019 64 bit

wsock32.dll уже есть в system32, regsvr32 ее не регистрирует, типа нет точки входа, в Эксел в референсез не открывается.

пишу:
Код
Public Declare PtrSafe Function socket Lib "wsock32.dll" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
Ошибка компиляции - Проект / библиотека не найдены

Чего делать то ?
 
Возможно эта инфа поможет: http://www.vbstreets.ru/VB/Articles/66012.aspx
«Бритва Оккама» или «Принцип Калашникова»?
 
Спасибо, похоже помогло, буду разбираться...
 
В References ничего добавлять не надо.

Такой бессмысленный код не вызывает ошибок компиляции и времени выполнения.
Код
Option Explicit
Public Declare PtrSafe Function socket Lib "wsock32.dll" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
Sub test()
  Dim a
  a = socket(0, 0, 0)
End Sub
Владимир
 
Пожалуй здесь нужно небольшое пояснение (очень упрощенно)
1. есть dll процедурные (набор функций), в VBA они подключаются через Declare к каждой отдельной функции. Это WinApi и часть других. (похоже и wsock32.dll из этой серии). т.е. используем функцию.
2. есть dll - ООП (классы/объекты с набором методов и свойств). В винде это технология COM (для этого собственно она и создавалась - возможность работы с ООП-dll вне зависимости от используемого языка). Для того, что бы не писать сотню Declare к сотне методов и свойств классов библиотеки - класс зарегистрирован в реестре, и вы видите это в VBA через references (по F2 можно посмотреть все дерево). т.е. используем объект/класс.
Подключаются через CreateObject, GetObject, NEW...

Владимир, может дополнить, что посчитает существенным.
Изменено: bedvit - 17 сен 2020 13:16:06
«Бритва Оккама» или «Принцип Калашникова»?
 
Виталий, в этой области Вы гуру. :)  
Владимир
 
Цитата
sokol92 написал:
В References ничего добавлять не надо. Такой бессмысленный код не вызывает ошибок компиляции и времени выполнения.Код
Спасибо. Разобрался уже, просто в References у меня была галочка на уже удаленную библиотеку...
 
Цитата
bedvit написал:
Пожалуй здесь нужно небольшое пояснение (очень упрощенно)1. есть dll процедурные (набор функций), в VBA они подключаются через Declare к каждой отдельной функции. Это WinApi и часть других. (похоже и wsock32.dll из этой серии). т.е. используем функцию.
Спасибо. А задекларированную функцию сразу проверяет при декларации или только при обращении ?
 
При компиляции не проверяет. Библиотека загружается и вызывается в Runtime. Особенно внимательно следует относиться к "шапкам" функций, так как при неправильном их указании Excel (изредка и Windows) вырубается со свистом. Так что при тестировании всегда предварительно сохраняйте промежуточные результаты!
Владимир
 
Цитата
sokol92 написал:
Особенно внимательно следует относиться к "шапкам" функций
Ясно, спасибо !
Страницы: 1
Читают тему (гостей: 1)
Наверх