powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение DLL Delphi с заранее не известным путем
9 сообщений из 9, страница 1 из 1
Подключение DLL Delphi с заранее не известным путем
    #38337260
Stanislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подключаю таким образом
Код: c#
1.
[DllImport("C:\\MyProg\\Services\\Library\\MyLib.dll", CharSet = CharSet.Ansi, EntryPoint = "OpenInspector")]



Все работает отлично, но возникла необходимость путь задавать на этапе выполнения приложения
как-то так
Код: c#
1.
2.
string pathdll = getprogfolder()+"Services\\Library\\MyLib.dll"
[DllImport(pathdll , CharSet = CharSet.Ansi, EntryPoint = "OpenInspector")]



Но переменную в атрибут передавать нельзя. Может быть есть какие-то другие методы подключения dll ?
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337300
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav, используй функцию SetDllDirectory
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337326
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileStanislav, используй функцию SetDllDirectory
но это же только директория. а как имя заслать?

почему-то единственным решением видется только компиляция на ходу кода , в котором динамически прошивается правильная строка....

Stanislav стоп, минуточку , давайте разберёмся....а в каких случаях откомпилированная прога ещё не знает, имён длл?
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337331
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileStanislav, используй функцию SetDllDirectory
Только для wn8 и win2012 server... Для win7, vista, и 2008 серверов нужно ставить KB2533623.

http://support.microsoft.com/kb/2533623 Корпорация Майкрософт выпустила новые улучшения API для Windows, призванные помочь разработчикам правильно и безопасно загружать внешние библиотеки. Дополнительные сведения см. на указанных ниже страницах веб-сайта Майкрософт.
SetDefaultDllDirectories
AddDllDirectory
RemoveDllDirectory
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337339
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erа как имя заслать?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
[DllImport("kernel32.dll", EntryPoint = "LoadLibrary")]
static extern int LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string lpLibFileName);

[DllImport("kernel32.dll", EntryPoint = "GetProcAddress")]
static extern IntPtr GetProcAddress( int hModule,[MarshalAs(UnmanagedType.LPStr)] string lpProcName);

[DllImport("kernel32.dll", EntryPoint = "FreeLibrary")]
static extern bool FreeLibrary(int hModule);



Код: c#
1.
delegate void CallMethod();



Код: c#
1.
2.
3.
4.
int hModule = LoadLibrary(path_to_your_dll);
var intPtr = GetProcAddress(hModule, method_name);
var action = (CallMethod)Marshal.GetDelegateForFunctionPointer(intPtr, typeof(CallMethod));
action.Invoke();
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337348
Stanislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erStanislav стоп, минуточку , давайте разберёмся....а в каких случаях откомпилированная прога ещё не знает, имён длл?

Имя она знает сразу, не знает путей, поэтому думаю
SetDllDirectory
Поможет.
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337351
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-erно это же только директория. а как имя заслать?
Имя, как и раньше, указывается в атрибуте DllImport.

beg-in-erдавайте разберёмся....а в каких случаях откомпилированная прога ещё не знает, имён длл?
Меняется только путь. Имя одно и то же.

МСУолько для wn8 и win2012 server... Для win7, vista, и 2008 серверов нужно ставить KB2533623.
Судя по MSDN всё наоборот. SetDllDirectory доступна начиная с WinXP SP1, а SetDefaultDllDirectories как ты сказал.
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38337422
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileSetDllDirectory доступна начиная с WinXP SP1, а SetDefaultDllDirectories как ты сказал.
Да, всё верно.
...
Рейтинг: 0 / 0
Подключение DLL Delphi с заранее не известным путем
    #38338588
Stanislav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем, спасибо за помощь!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Подключение DLL Delphi с заранее не известным путем
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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