использование msvcrt.dll, kernel32.dll в VB6
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"
В чем я не прав?
Нельзя объявлять API-функции Public'ом. Только Private'ом.
Поставил Private. Ничего не изменилось.
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
Все работает
Цитата: 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"
В чем я не прав?
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-байтные параметры...