Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проблема с вызовом библиотеки / 14 сообщений из 14, страница 1 из 1
02.08.2006, 16:10
    #33895127
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
Есть библиотека написанная на VC++

вот функция
Код: plaintext
char* (__stdcall *ffast)(char *arg1, char *arg2);

стоит вопрос о вызове в VB


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Public Declare Function req Lib "actv.dll" Alias "_ffast" (ByVal arg1 As String, ByRef arg2 As String) As String

Public Function act(ByVal arg1 As String, ByRef arg2 As String)
Dim ret
On Error Resume Next

arg1 = "arg1"
arg2 = ""

ret = req(arg1, arg2) 'так вызвать не получится

End Function

выходит ошибка чтения из памяти, подскажите как вызвать или где почитать
...
Рейтинг: 0 / 0
02.08.2006, 16:35
    #33895208
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
Все аргументы req должны быть ByVal.
...
Рейтинг: 0 / 0
02.08.2006, 16:47
    #33895264
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
AntonariyВсе аргументы req должны быть ByVal.

arg2 возвращает значение, он byref, бибилиотека не моя.
...
Рейтинг: 0 / 0
02.08.2006, 16:57
    #33895302
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
автор(char *arg1, char *arg2);Где отличие между 1м и 2м?
Код: plaintext
Public Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Как видишь lpBuffer тоже объявлен ByVal, однако он возвращает значение. Может в твою функцию тоже нужно передать, например переменную со строкой из сотни пробелов?
...
Рейтинг: 0 / 0
02.08.2006, 17:01
    #33895323
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
да, теперь вроде нормально, но пишет - 49, Bad DLL calling convention
где-то я видел описание этой ошибки, сча гляну, но если можете, помогите
...
Рейтинг: 0 / 0
02.08.2006, 17:23
    #33895407
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
Хмм, похоже все таки ByRef. А что функция делает? Может проще написать свой аналог?
...
Рейтинг: 0 / 0
02.08.2006, 17:37
    #33895442
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
библиотека не моя, и код мне не дадут :(
...
Рейтинг: 0 / 0
02.08.2006, 17:45
    #33895460
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
кстати

C language: CHAR
data type In Visual Basic: ByVal variable As Byte
declare as Call with: An expression that evaluates to a Byte
...
Рейтинг: 0 / 0
02.08.2006, 17:53
    #33895483
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
То, что код не дадут не сомневался, но хоть известно что она делает? Mid вырезает, Format форматирует, _ffast ... что-то ускоряет? ;-)

А попробуй-ка объявить as byte и передавай строку как байтовый массив. 1й его элемент.
...
Рейтинг: 0 / 0
02.08.2006, 18:07
    #33895516
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
Объявил, сказал что Type mismatch :(
...
Рейтинг: 0 / 0
02.08.2006, 18:09
    #33895521
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
AntonariyТо, что код не дадут не сомневался, но хоть известно что она делает? Mid вырезает, Format форматирует, _ffast ... что-то ускоряет? ;-)


_ffast возвращает сгенеренный ключ
...
Рейтинг: 0 / 0
02.08.2006, 18:38
    #33895614
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
Мне передали бибилиотеку где все CHAR заменены на LPSTR, я все делаю как в MSDN , но он по прежнему ругается на 49, Bad DLL calling convention, HELP
...
Рейтинг: 0 / 0
03.08.2006, 10:05
    #33896334
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
Для тебя переделали библиотеку? Пусть переделают так, чтобы функция принимала указатель на строку типа long, а строку будешь передавать через varptr, такая фишка работает наверняка, проверено.
...
Рейтинг: 0 / 0
04.08.2006, 19:45
    #33900882
neZnauKto
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с вызовом библиотеки
с проблемой разобрался, скоро выложу пример для других
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / проблема с вызовом библиотеки / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]