Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 «  : 18-12-2009 15:06 »   | 
								
								 | 
							  
							 
							(Путаюсь в терминах , описывающих связывание с длл, поэтому по-простому вопрос задам:) экзешник использует A.dll, в программе указывается 	#pragma comment(lib,"A.lib")
  но потом, при запуске, экзешник ищет длл сначала около себя, потом в system32 (в ведь если найдёт - цепляет оттуда...) А как указать путь (хотя бы относительный) к длл, не используя LoadLibrary/ GetProcAddress  ? то есть, к примеру, жёстко из папки D:\1\DDL\  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 18-12-2009 15:31 »   | 
								
								 | 
							  
							 
							выдернуть %PATH%; добавить в него D:\1\DDL\, сказать SetEnvironmentStr. как думаешь, проканает? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 18-12-2009 15:55 »   | 
								
								 | 
							  
							 
							трогать  %PATH% не хочется, так как это есть помойка файлов, и что там УЖЕ лежит - один Билл ведает ) Да и теоретически можно повлиять на уже установленные приложения.
 
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 18-12-2009 15:58 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #3 : 18-12-2009 18:20 »   | 
								
								 | 
							  
							 
							Алексей1153++, создать из dll COM-объект, зарегистрировать его в системе и загружать его функции через интерфейс. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 18-12-2009 20:08 »   | 
								
								 | 
							  
							 
							zubr, точно не хочу так ))  А других путей совсем нет ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 21-12-2009 05:42 »   | 
								
								 | 
							  
							 
							Алексей1153++, 
  1) %PATH% ты всегда можешь вернуть к исходному на выходе; 2) a.dll можно скопировать в system32, а потом убить. если там уже есть копия - затереть, потом восстановить. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 21-12-2009 05:44 »   | 
								
								 | 
							  
							 
							всё не нравится ( Кину длл рядом с экзешником 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 21-12-2009 06:31 »   | 
								
								 | 
							  
							 
							Все переменные окружения локальны для процесса. Т.ч. изменять их можно как угодно. Только стоит помнить, что они наследуются (копируются) в дочерние процессы. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 21-12-2009 06:51 »   | 
								
								 | 
							  
							 
							Алексей1153++, посмотри в MSDN поиск по ключевой фразе: Dynamic-Link Library Redirection 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 21-12-2009 07:17 »   | 
								
								 | 
							  
							 
							PATH, кстати, не подойдёт, ведь я не могу настроить его до запуска программы, а запустить программу не смогу, потому что не будет найдена ДЛЛ... zubr, appname.local - это клёвая вещь, надо запомнить    Но не подходит для меня, поскольку я не буду использовать LoadLibrary  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 21-12-2009 07:18 »   | 
								
								 | 
							  
							 
							Алексей1153++, может, тупо линковать длл в сам экзешник? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 21-12-2009 07:21 »   | 
								
								 | 
							  
							 
							Мм, ну , во-первых, как это делается ? (пригодится). Во-вторых - длл используется несколькими экзешниками. Во все засунуть ? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 21-12-2009 07:35 »   | 
								
								 | 
							  
							 
							Алексей1153++, она компилируется в файл ресурсов, который ты включаешь в экзешник. а дальше распаковывается куда тебе надо, в дельфях это обычно делается через TResourceStream. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 21-12-2009 07:37 »   | 
								
								 | 
							  
							 
							Понятно, я то думал, что-то особенное есть для встраивания )
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Команда клуба
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									«  Ответ #14 : 21-12-2009 07:42 »    | 
								
								 | 
							  
							 
							Алексей1153++, многие среды имеют свои приблуды. например, у VS.NET есть ILMerge.exe, который позволяет после сборки проекта встроить в него dll и экзешник будет работать без неё. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							zubr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #15 : 21-12-2009 07:43 »   | 
								
								 | 
							  
							 
							Алексей1153++, насколько я понимаю, аналогично LoadLibrary будет работать и поиск при неявном связывании. По крайней мере если верить Рихтеру (Создание эффективных WIN32-приложений): Поскольку в разделе импорта указано только имя DLL (без пути), загрузчику приходится самому искать ее ня дисковых устройствах в компьютере пользователя. Поиск DLL осуществляется в следующей последовательности. 
  Каталог, содержащий ЕХЕ-файл.  Текущий каталог процесса.  Системный каталог Windows  Основной каталог Windows  Каталоги, указанные в переменной окружения PATH.  Учтите, что на процесс поиска библиотек могут повлиять и другие факторы (см. главу 20)
  А в главе 20 как раз есть раздел про редирект. Понятно, я то думал, что-то особенное есть для встраивания ) Загрузка из ресурса в память процесса, без сохранения на диск. Пример я вроде выкладывал в какой то теме.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #16 : 21-12-2009 07:55 »   | 
								
								 | 
							  
							 
							zubr, у меня .local не пожелал срабатывать - цепляется длл из system32 (около exe я временно убрал для эксперимента). То есть не реагирeет на local никак.
  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	 |