Страница: 1 |
Проблема вот в чем… Есть dll на VC++ : typedef int (*ImportFunction)( int k); extern "C" __declspec (dllexport) int __stdcall Start(ImportFunction x) { int k=1; int i=x(k); return 1; }; и есть вызов ее из VB: 1)Declare Function Start Lib "CallBackTMP.dll" Alias "_Start@4" (ByVal xCallbacF As Long) As Integer 2) Public Function xCallbackF(x As Integer) As Integer MsgBox ("Work…") End Function 3) Private Sub Command1_Click() Call Start(AddressOf xCallbackF) End Sub Все отрабатывает, MsgBox выкидывается, и как только, так и сразу … вылетает ошибка Как я понял о проблемах с декларацией callback функций. Что тут не так? Ведь тот же системный таймер (у него такой же принцип) работает??? (Вопрос модератору: В пятницу я оставил этот же вопрос и он Кудато делся ... спрашивается За Что???)
Страница: 1 |
Вопрос: callback
Добавлено: 07.06.04 15:40
Автор вопроса: Anjey
Ответы
Всего ответов: 1
Номер ответа: 1
Автор ответа:
Fallout
Вопросов: 10
Ответов: 387
Web-сайт:
Профиль | | #1
Добавлено: 08.06.04 12:59
п.с: оффтоп конечно но прсото чтоб были нормальные названия функций надо при экспорте в С++ делать через *.def файл
Ты кстати помнишь какой тип передачи аргументов у ВБ функций? и какой тип очистки стека после вызова? просто по умолчанию если функция в С++ то компилятор чистит стек... от параметров add esp, <сумма байт агрументов>
А если сделать что нибудь типа....
nак
typedef int __stdcall (*ImportFunction)(int k);