Public Declare Function
От: theShadow  
Дата: 25.04.04 18:55
Оценка:
Подключаю в excel свою библиотеку таким образом
Public Declare Function xItsmyfunc Lib "itsmydll.dll" Alias "myfunc" (ByVal Arg1 As Double, ByVal Arg2 As Double) As Double
Всё работает если dll находится в system32, но мне нужно что-бы эта dll искалась в той директории с которой запустили excel файл,
не подскажете как это реализовать?
Posted via RSDN NNTP Server 1.8
Re: Public Declare Function
От: Elena_ Россия  
Дата: 26.04.04 06:54
Оценка:
Здравствуйте, theShadow, Вы писали:

S>Подключаю в excel свою библиотеку таким образом

S>Public Declare Function xItsmyfunc Lib "itsmydll.dll" Alias "myfunc" (ByVal Arg1 As Double, ByVal Arg2 As Double) As Double
S>Всё работает если dll находится в system32, но мне нужно что-бы эта dll искалась в той директории с которой запустили excel файл,
S>не подскажете как это реализовать?

См. http://www.rsdn.ru/Forum/?mid=534950
Автор: lazymf
Дата: 11.02.04
Пользователь — друг программиста!
Re[2]: Public Declare Function
От: theShadow  
Дата: 26.04.04 10:11
Оценка:
>> См. http://www.rsdn.ru/Forum/?mid=534950
Автор: lazymf
Дата: 11.02.04


Понятно, но это немного не то что мне надо, может можно как-то в Public Declare Function указать чтобы dll ка искалась в текущей директории?
Posted via RSDN NNTP Server 1.8
Re: Public Declare Function
От: PA  
Дата: 26.04.04 10:52
Оценка:
Public Declare Function xItsmyfunc Lib ".\itsmydll.dll" Alias "myfunc" (ByVal Arg1 As Double, ByVal Arg2 As Double) As Double
Re: ChDir
От: Vi2 Удмуртия http://www.adem.ru
Дата: 26.04.04 11:10
Оценка:
Здравствуйте, theShadow, Вы писали:

S>Всё работает если dll находится в system32, но мне нужно что-бы эта dll искалась в той директории с которой запустили excel файл, не подскажете как это реализовать?

Есть мнение, что нужно сделать ChDir на ту директорию и вызвать функцию.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: Public Declare Function
От: theShadow  
Дата: 26.04.04 15:20
Оценка:
>Public Declare Function xItsmyfunc Lib".\itsmydll.dll" Alias"myfunc" (ByVal Arg1As Double, ByVal Arg2As Double)As Double
Уже пробывал, не работает
Posted via RSDN NNTP Server 1.8
Re[2]: ChDir
От: theShadow  
Дата: 26.04.04 15:23
Оценка:
>Есть мнение, что нужно сделать ChDir на ту директорию и вызвать функцию.
У меня тоже была такая идея, только вот
Public Declare Function xAnyFunc Lib СhDir()+".\anything.dll" Alias "anyfunc" (ByVal lpszDst As Long) As Long
и разные другие комбинации не проходят с chdir
Posted via RSDN NNTP Server 1.8
Re[3]: ChDir
От: Vi2 Удмуртия http://www.adem.ru
Дата: 27.04.04 03:33
Оценка:
Здравствуйте, theShadow, Вы писали:

Vi2>>Есть мнение, что нужно сделать ChDir на ту директорию и вызвать функцию.
S>У меня тоже была такая идея, только вот
S>Public Declare Function xAnyFunc Lib СhDir()+".\anything.dll" Alias "anyfunc" (ByVal lpszDst As Long) As Long
S>и разные другие комбинации не проходят с chdir

Это естественно для определения. Я же предлагал ее в том месте, где функция используется. Перед вызовом функции из DLL корректируется текущая директория для поиска этой самой DLL — она же не сразу грузится.

Вот полный список путей и способов поиска DLL на диске. Это описано в MSDN для LoadLibrary:

  1. With both implicit and explicit linking, Windows first searches the set of pre-installed DLLs such as the performance library (KERNEL32.DLL) and the security library (USER32.DLL). Windows then searches for the DLLs in the following sequence:
  2. The directory where the executable module for the current process is located.
  3. The current directory.
  4. The Windows system directory. The GetSystemDirectory function retrieves the path of this directory.
  5. The Windows directory. The GetWindowsDirectory function retrieves the path of this directory.
  6. The directories listed in the PATH environment variable.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[3]: ChDir
От: Igor Kudryashov Россия  
Дата: 29.04.04 05:58
Оценка: 3 (1)
Здравствуйте, theShadow, Вы писали:

>>Есть мнение, что нужно сделать ChDir на ту директорию и вызвать функцию.

S>У меня тоже была такая идея, только вот
S>Public Declare Function xAnyFunc Lib СhDir()+".\anything.dll" Alias "anyfunc" (ByVal lpszDst As Long) As Long
S>и разные другие комбинации не проходят с chdir

Очевидно имелось ввиду следующее:

Public Declare Function xAnyFunc Lib "anything.dll" Alias "anyfunc" (ByVal lpszDst As Long) As Long

Sub CallDLLFunction()
    Dim Param As Long
    
    ChDir("Туда, где лежит DLL")
    anyfunc(Param)
    
end sub
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.