(VBA) Run-Time error '53'
От: Warstone  
Дата: 06.01.08 19:21
Оценка:
Помогите бедному человеку.
Есть длл: R_Ex.dll, в ней есть экспортируемая функция: R_FORMULA(ByVal OutStr as String) as Byte
Надо заставить Эксель выполнить эту функцию. Делаю так:

Public Declare Function R_Formula Lib "H:\inout\R_EX\R_Ex.dll" Alias "R_FORMULA" (ByVal OutStr As String) As Byte

Sub Test()
Dim Str As String
Str = String(1024, "8")
Call R_Formula(Str)
MsgBox (Str + " Len:" + CStr(Len(Str)))
End Sub


На что при вызове процедуры получаю Run-Time error '53' (File not found)
Путь указан абсолютный, длл там точно есть, работает (проверяли), эта функция опять-таки там есть.

Где я не прав?
Re: (VBA) Run-Time error '53'
От: Бенедикт  
Дата: 06.01.08 23:46
Оценка:
Warstone,

ошибка "File not found" может возникать не только по очевидной причине отсутствия самой DLL, но и если отсутствуют файлы, необходимые для её работы (у DLL есть зависимости). Попробуйте воспользоваться Dependency Walker, чтобы их обнаружить.
Re: (VBA) Run-Time error '53'
От: ZAMUNDA Земля для жалоб и предложений
Дата: 07.01.08 00:43
Оценка:
Здравствуйте, Warstone, Вы писали:

W>Помогите бедному человеку.

W>Есть длл: R_Ex.dll, в ней есть экспортируемая функция: R_FORMULA(ByVal OutStr as String) as Byte
А она точно такая? Сигнатура на C её есть? Можно взглянуть?

W>На что при вызове процедуры получаю Run-Time error '53' (File not found)

А исходник самой R_FORMULA есть под рукой? Какой HRESULT она возвращает, в частности, интересно узнать. Если что, можно запустить под любым отладчиком бинарник, и посмотреть содержимое EAX -- он будет там, и выглядеть, скорее всего, будет так: 0x80020035
Ну это я так... на случай, если другие варианты отпадут.
Наука изощряет ум; ученье вострит память.
(c) Козьма Прутков
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.