Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

использование msvcrt.dll, kernel32.dll в VB6

20K
16 марта 2007 года
Vlad_Imir
14 / / 16.03.2007
В Модуле:
Public Declare Function pow Lib "msvcrt" (ByVal x As Double, ByVal y As Double) As Double

Попытка использования:
Debug.Print pow(2#, 3#)

Получаю "Run Time error 49 Bad dll calling convension"


В чем я не прав?
1.9K
16 марта 2007 года
AxXxB
229 / / 21.11.2006
Нельзя объявлять API-функции Public'ом. Только Private'ом.
20K
16 марта 2007 года
Vlad_Imir
14 / / 16.03.2007
Поставил Private. Ничего не изменилось.
20K
16 марта 2007 года
Vlad_Imir
14 / / 16.03.2007
Кроме того для kernel32.dll нет проблем, например

Public Declare Function Beep Lib "kernel32" (ByVal x As Integer, ByVal y As Integer) As Boolean

Private Sub Command1_Click()
Beep 2000, 1000
End Sub

Все работает
8.9K
17 марта 2007 года
Залетин Виталий
71 / / 10.12.2005
Цитата: Vlad_Imir
В Модуле:
Public Declare Function pow Lib "msvcrt" (ByVal x As Double, ByVal y As Double) As Double

Попытка использования:
Debug.Print pow(2#, 3#)

Получаю "Run Time error 49 Bad dll calling convension"


В чем я не прав?



Это ошибка конвертации вызова. Чаще всего такое возникает при попытке использования С-функций с переменным числом параметров (CDECL), чего бейсик не поддерживает (только STDCALL). Внимательно проверьте параметры функции - скорее всего, это неправильное объявление либо использование функции, которая должна вызываться по CDECL-правилам. Да и сомнительно как-то, чтобы функция из MSVCRT.DLL использовала 8-байтные параметры...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог