Private Declare Sub TestSub Lib "MyLib"(ByVal Addr0 as Long,ByVal Addr1 As Long)
Private Const S as String="Test string"
Private Const L as Long=65536
Private Sub Main
MsgBox Hex$(VarPtr(S))+","+Hex$(VarPtr(L))
TestSub VarPtr(S),VarPtr(L)
End Sub
Передача аргументов из VB
Код:
TestSub имеет делом записать дамп стека[SIZE="1"](512 байт,исключая адрес возврата,в файл.При бинарном поиске обнаруживается,что адреса на параметры не только не расположены за адресом возврата(что,впрочем,и понятно-чтобы выполнить процедуру,VB должен вызвать из своего движка DLLFunctionCall или что-то там ещё и передать ей имя вызываемой функции)[/SIZE],но и находятся друг от друга на порядочном расстоянии.Насколько я помню,VB преобразует типы,поэтому ссылки на преобразованные переменные должны находиться где-то рядом:D.Ведь WinAPI-функции как-то находят передаваемые им параметры:).Никто не поможет найти местоположение адресов?
Кстати,во время написания этой DLL'ки была замечена одна интересная особенность:DLL'ка существует(даже полный путь к ней прописан),процедура в ней-тоже,а VB при попытке вызова функции пишет,что 'File not found',а код ошибки был не 53(при простом отсутствии файла код ошибки НЕ ТАКОЙ!!!).В чём дело?
Пожалуйста,помогите!Очень надо!Если кому-то чем-то надо помочь,помогу,чем смогу:)
простенький вопрос(может даже не в тему): длл на чем написана? на VB?
Дело было так-я использовал Invoke Func,[ESP+4],[ESP+8] и т.д.В этом то и была проблема-я неправильно рассчитал смещение,и из-за этого аксес виолэйшн