Помогите разобраться с CIN
-
- beginner
- Сообщения: 11
- Зарегистрирован: 22 дек 2008, 17:17
- Версия LabVIEW: 8.5
- Контактная информация:
Помогите разобраться с CIN
в примерах по испольхованию CIN (Code Interface Node) нужно загружать код в формате .lsb, а имеется стандартный файл Си, помогите разобраться.
Заранее спасибо
Заранее спасибо
-
Eugen Graf
- guru
- Сообщения: 6502
- Зарегистрирован: 13 ноя 2007, 02:20
- Награды: 4
- Версия LabVIEW: 2009
- Откуда: Saarbrücken
- Контактная информация:
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: помогите разобраться с CIN
присоединяюсь. Если версия не меньше чем 8.2, то смысла делать CIN мало. И даже в случае предыдущих версий, если не используешь навороты вроде CINLoad, CINAbort, CINUnload и своего CIN Dataspace, то всё равно лучше делать dll.
А если всё-таки надо использовать, то здесь лежит wizard, автоматически делающий CIN-проекты из сенерированных сишников. Wizard написан для Visual Studio 2003/05.
А если всё-таки надо использовать, то здесь лежит wizard, автоматически делающий CIN-проекты из сенерированных сишников. Wizard написан для Visual Studio 2003/05.
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: помогите разобраться с CIN
Volley, dll в LabVIEW или dll для последующего использования в LabVIEW, пожалуйста конкретизируй
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- beginner
- Сообщения: 11
- Зарегистрирован: 22 дек 2008, 17:17
- Версия LabVIEW: 8.5
- Контактная информация:
Re: помогите разобраться с CIN
Извиняюсь за неккоректный вопрос, имелось ввиду не использование готовых DLL, а создание новых из LabVIEW
-
Pavel Krivozubov
- professor
- Сообщения: 4421
- Зарегистрирован: 07 фев 2008, 16:39
- Награды: 3
- Версия LabVIEW: 7.0 - 2013
- Откуда: г. Электросталь
- Благодарил (а): 24 раза
- Поблагодарили: 9 раз
- Контактная информация:
Re: помогите разобраться с CIN
если все же это создание ДЛЛ в других средах, то вот эта тема тебе поможет. я там выкладывал рук-во, как чего делать.Volley писал(а):тогда, пожалуста, пример по созданию DLL в LabVIEW?
/viewtopic.php?f=52&t=784&hilit=%D0%B1%D0%BB%D0%B0%D0%B3%D0%BE%D0%B4%D0%B0%D1%80%D1%87%D0%B8%D0%BA
ну и для соответствия типов данных С++ и LabVIEW смотри пример Call Dll
Правила форума
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
Developlabs - IT услуги - ждём Ваших заказов на написание программ
Новостной канал о LabVIEW и технологиях NI на Facebook
-
- beginner
- Сообщения: 11
- Зарегистрирован: 22 дек 2008, 17:17
- Версия LabVIEW: 8.5
- Контактная информация:
Re: помогите разобраться с CIN
И еще хотельсь бы все -таки ответ на мой первй вопрос, это у меня одного такие проблемы или действительно в стандартных эксемплах представлен код Си а программа требует файл в формате .lsd
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: помогите разобраться с CIN
Indey, Volley, похоже, вообще не про то.
1. CIN node а также call library node предназначены для включения кода, написанного на текстовом языке (C, например) в . Т.е. есть сишный код, хотим вызвать его из
2. Application Builder предназначен для создания DLL (и приложений) из уже готового кода написанного на для включения в другие проекты. Т.е. есть код, хотим вызвать его из С.
Ты имел в виду второе, так?
.lsb (не .lsd ) это то во что преобразуется dll, созданная специальным образом, чтобы быть загруженной в CIN node. Т.е. это про первый случай.
Ещё раз мой вопрос: тебя интересует первое или второе?
Давай конкретизируем.Volley писал(а):имелось ввиду не использование готовых DLL, а создание новых из LabVIEW
1. CIN node а также call library node предназначены для включения кода, написанного на текстовом языке (C, например) в . Т.е. есть сишный код, хотим вызвать его из
2. Application Builder предназначен для создания DLL (и приложений) из уже готового кода написанного на для включения в другие проекты. Т.е. есть код, хотим вызвать его из С.
Ты имел в виду второе, так?
.lsb (не .lsd ) это то во что преобразуется dll, созданная специальным образом, чтобы быть загруженной в CIN node. Т.е. это про первый случай.
Ещё раз мой вопрос: тебя интересует первое или второе?
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 фев 2013, 09:46
- Версия LabVIEW: 9.0
- Контактная информация:
Re: Помогите разобраться с CIN
Хотел бы поднять тему с аналогичной проблемой:
Как, все-таки создавать файл *.lsb для CIN (Code Interface node)? В стандартной справке LabView совершенно непонятно как это делается:
http://zone.ni.com/reference/en-XX/help ... in_source/
Может кто-то объяснить более подробно?
А ноги вот откуда растут, чтобы не вдаваться в подробности почему надо делать именно CIN а НЕ DLL, связанная тема на этом форуме:
http://www.labviewportal.org/viewtopic. ... 000#p32719
Как раз там есть несколько примеров с CIN, Все они успешно у меня работают.
Сам я взял допилил один из существующих кодов *.c (которые потом преобразуются в *.lsb) для своих задач, благо не пришлось много переделывать.
И теперь вопрос такой: Как из него сделать *.lsb, чтобы потом вызвать из LabView через CIN?
Надеюсь на скорый ответ, буду мониторить тему.
Как, все-таки создавать файл *.lsb для CIN (Code Interface node)? В стандартной справке LabView совершенно непонятно как это делается:
http://zone.ni.com/reference/en-XX/help ... in_source/
Может кто-то объяснить более подробно?
А ноги вот откуда растут, чтобы не вдаваться в подробности почему надо делать именно CIN а НЕ DLL, связанная тема на этом форуме:
http://www.labviewportal.org/viewtopic. ... 000#p32719
Если уже есть налаженное решение с CIN, то я бы не стал переписывать его через DLL без особых на то причин
Как раз там есть несколько примеров с CIN, Все они успешно у меня работают.
Сам я взял допилил один из существующих кодов *.c (которые потом преобразуются в *.lsb) для своих задач, благо не пришлось много переделывать.
И теперь вопрос такой: Как из него сделать *.lsb, чтобы потом вызвать из LabView через CIN?
Надеюсь на скорый ответ, буду мониторить тему.
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 фев 2013, 09:46
- Версия LabVIEW: 9.0
- Контактная информация:
Re: Помогите разобраться с CIN
Я смотрю тема просматривается, но как сделать пока никто не знает.
Вот что еще мне удалось откопать: http://zone.ni.com/devzone/cda/epd/p/id/2690
Generating a Makefile for CINs with LabVIEW
Вот что еще мне удалось откопать: http://zone.ni.com/devzone/cda/epd/p/id/2690
Generating a Makefile for CINs with LabVIEW
Товарищи, помогите открыть (там версия 5.0), что там внутри? К сожалению файл сюда не могу прикрепить. Может удастся переделать в более новых версиях LV?This vi prompts the user for the Code Interface Node (CIN) and then automatically generates the makefile. The makefile is created and saved in the same directory as the CIN. This program will automatically create a makefile for an existing CIN. The C code file must have a *.c or *.cpp extension. The vi does not check to make sure you have selected a valid CIN. This VI will not create makefiles that can be used to generate LV external subroutines. This example will work in LabVIEW 5.0.x and above and generates makefiles for use with MS Visual C++ 5.0 and up.
-
- beginner
- Сообщения: 11
- Зарегистрирован: 12 фев 2013, 09:46
- Версия LabVIEW: 9.0
- Контактная информация:
Re: Помогите разобраться с CIN
А ну вот собственно, чтобы туда не лазить далеко. (Нашел как это делается тут)
- Вложения
-
- cin_mak.vi
- (86.35 КБ) 224 скачивания
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Помогите разобраться с CIN
lsb получается из dll путем её обработки специальной программой.
В своё время я написал wizard, устанавливающийся под VS.2003, который создавал новый тип проектов: CIN. Скачать можно здесь: http://code.google.com/p/cinwizardvs2003labview/ Там же моя статья в LTR с инструкцией по инсталляции и применению.
Вот тоже полезная ссылка: http://www.ni.com/white-paper/3435/en
В своё время я написал wizard, устанавливающийся под VS.2003, который создавал новый тип проектов: CIN. Скачать можно здесь: http://code.google.com/p/cinwizardvs2003labview/ Там же моя статья в LTR с инструкцией по инсталляции и применению.
Вот тоже полезная ссылка: http://www.ni.com/white-paper/3435/en
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Помогите разобраться с CIN
Avant_Guard
Можно также компилировать CIN в Microsoft Visual Studio 2005 и выше. Для этого нужно настроить проект таким образом:
Project -> Properties:
вкладка Configuration Properties -> General:
изменить значение параметра "Use Of MFC" с "Use MFC in a Shared DLL" на "Use Standard Windows Libraries"
вкладка Configuration Properties -> C/C++ -> General:
1) изменить значение параметра "Additional Include Directories" с [пусто] на "$(CINTOOLS_DIR)"
2) изменить значение параметра "Detect 64bit Portability Issues" с "Yes (/Wp64)" на "No"
вкладка Configuration Properties -> C/C++ -> Code Generation:
1) изменить значение параметра "Runtime Library" с "Multi-threaded Debug DLL (/MDd)" на "Multi-threaded DLL (/MD)"
2) изменить значение параметра "Struct Member Alignment" с "Default" на "1 Byte (/Zp1)"
3) изменить значение параметра "Buffer Security Check" с "Yes" на "No"
вкладка Configuration Properties -> C/C++ -> Precompiled Headers:
1) изменить значение параметра "Create/Use Precompiled Header" с "Use Precompiled Header (/Yu)" на "Not Using Precompiled Headers"
2) изменить значение параметра "Create/Use PCH Through File" с "StdAfx.h" на [пусто]
3) изменить значение параметра "Precompiled Header File" с "$(IntDir)\$(TargetName).pch" на [пусто]
вкладка Configuration Properties -> C/C++ -> Advanced:
1) изменить значение параметра "Compile As" с "Compile as C++ Code (/TP)" на "Default"
вкладка Configuration Properties -> Linker -> General:
1) изменить значение параметра "Suppress Startup Banner" с "Yes (/NOLOGO)" на "No"
2) изменить значение параметра "Additional Library Directories" с [пусто] на "$(CINTOOLS_DIR)"
вкладка Configuration Properties -> Linker -> Input:
1) изменить значение параметра "Additional Dependencies" с [пусто] на "cin.obj labview.lib lvsb.lib"
2) изменить значение параметра "Ignore Specific Library" с [пусто] на "MSVCRTD"
3) изменить значение параметра "Module Definition File" с ".\SampleCIN.def" на "$(CINTOOLS_DIR)\lvsbmain.def"
вкладка Configuration Properties -> Custom Build Step -> General:
1) изменить значение параметра "Command Line" с [пусто] на ""$(CINTOOLS_DIR)\lvsbutil" -c "$(TargetName)" -d "$(OutDir)""
2) изменить значение параметра "Outputs" с [пусто] на "$(OutDir)$(TargetName).lsb"
поле Configuration в левом верхнем углу окна SampleCIN Property Pages:
1) изменить значение поля с "Active(Debug)" на "Release"
2) повторить вышеописанные действия
Перед компиляцией следует создать переменную среды CINTOOLS_DIR, содержащую путь к папке с заголовочными файлами LabVIEW, например C:\Program Files (x86)\National Instruments\LabVIEW 2011\cintools__. Для LabVIEW 2011/2012 лучше не использовать уже имеющуюся папку cintools в каталоге LabVIEW, а создать рядом новую, например cintools__, и поместить туда файлы из вложения в этом сообщении. Это необходимо, т.к. начиная с LV 2010 CIN не поддерживается NI (хотя и работает внутри vi) и из директории cintools удалена часть файлов. Кроме того, в палитре виртуальных инструментов нет иконки CIN, но её можно туда добавить с помощью подпалитры adv.mnu из старых версий LV (см. вложение). Почитайте ещё мануалы Using External Code in LabVIEW и LabVIEW Advanced Course, там есть много примеров по работе с CIN. Дополню этот мануал ещё одним важным замечанием. На нижеописанные грабли сам наступал несколько раз, т.к. информация со временем забывается, поэтому это стоит запомнить. При компиляции DLL для CIN'а в MS Visual Studio 2005 внутрь библиотеки "зашивается" манифест, содержащий зависимости от стандартных библиотек VC++. Если DLL построена в Release-конфигурации, то манифест будет такого вида:
Если же конфигурация была Debug, то манифест будет выглядеть так:
Как видим, в этом случае библиотека зависит от отладочных (debug) библиотек Microsoft Visual C Run-Time, которые идут вместе со средой Visual Studio. Если эту DLL перенести на ПК, где нет MS Visual Studio, то она работать не будет! Это означает, что она не захочет грузиться ни в LabVIEW (через узел Call Library Function Node), ни в какой-либо другой среде (через LoadLibrary, например). Соответственно, и узел Code Interface Node окажется не работоспособен, а выдаст сообщение:
1. Поменять конфигурацию билда DLL в MS Visual Studio с Debug на Release и откомпилированную библиотеку (VI с CIN'ом) уже поместить на целевую машину;
2. Установить на целевой компьютер MS Visual Studio или Visual C++ 2005 Express Edition;
3. Создать в MS Visual Studio инсталлер для DLL - способ, конечно, малопригодный для одной маленькой библиотеки;
4. Отредактировать в HEX-редакторе саму библиотеку (точнее, манифест внутри неё) (пробовал и вроде как работает), то есть, нужно заменить строку
5. Перейти на другой компилятор (MinGW, старый VC 7.1 или 2003, новые версии Visual Studio);
6. Переносить на целевой ПК все манифесты и библиотеки, от которых зависит компилируемая DLL.
Подробно эта история с манифестами обсуждалась на форуме NI, здесь, здесь, частично тут, тут и ещё много где, гугл в помощь.
Можно также компилировать CIN в Microsoft Visual Studio 2005 и выше. Для этого нужно настроить проект таким образом:
Project -> Properties:
вкладка Configuration Properties -> General:
изменить значение параметра "Use Of MFC" с "Use MFC in a Shared DLL" на "Use Standard Windows Libraries"
вкладка Configuration Properties -> C/C++ -> General:
1) изменить значение параметра "Additional Include Directories" с [пусто] на "$(CINTOOLS_DIR)"
2) изменить значение параметра "Detect 64bit Portability Issues" с "Yes (/Wp64)" на "No"
вкладка Configuration Properties -> C/C++ -> Code Generation:
1) изменить значение параметра "Runtime Library" с "Multi-threaded Debug DLL (/MDd)" на "Multi-threaded DLL (/MD)"
2) изменить значение параметра "Struct Member Alignment" с "Default" на "1 Byte (/Zp1)"
3) изменить значение параметра "Buffer Security Check" с "Yes" на "No"
вкладка Configuration Properties -> C/C++ -> Precompiled Headers:
1) изменить значение параметра "Create/Use Precompiled Header" с "Use Precompiled Header (/Yu)" на "Not Using Precompiled Headers"
2) изменить значение параметра "Create/Use PCH Through File" с "StdAfx.h" на [пусто]
3) изменить значение параметра "Precompiled Header File" с "$(IntDir)\$(TargetName).pch" на [пусто]
вкладка Configuration Properties -> C/C++ -> Advanced:
1) изменить значение параметра "Compile As" с "Compile as C++ Code (/TP)" на "Default"
вкладка Configuration Properties -> Linker -> General:
1) изменить значение параметра "Suppress Startup Banner" с "Yes (/NOLOGO)" на "No"
2) изменить значение параметра "Additional Library Directories" с [пусто] на "$(CINTOOLS_DIR)"
вкладка Configuration Properties -> Linker -> Input:
1) изменить значение параметра "Additional Dependencies" с [пусто] на "cin.obj labview.lib lvsb.lib"
2) изменить значение параметра "Ignore Specific Library" с [пусто] на "MSVCRTD"
3) изменить значение параметра "Module Definition File" с ".\SampleCIN.def" на "$(CINTOOLS_DIR)\lvsbmain.def"
вкладка Configuration Properties -> Custom Build Step -> General:
1) изменить значение параметра "Command Line" с [пусто] на ""$(CINTOOLS_DIR)\lvsbutil" -c "$(TargetName)" -d "$(OutDir)""
2) изменить значение параметра "Outputs" с [пусто] на "$(OutDir)$(TargetName).lsb"
поле Configuration в левом верхнем углу окна SampleCIN Property Pages:
1) изменить значение поля с "Active(Debug)" на "Release"
2) повторить вышеописанные действия
Перед компиляцией следует создать переменную среды CINTOOLS_DIR, содержащую путь к папке с заголовочными файлами LabVIEW, например C:\Program Files (x86)\National Instruments\LabVIEW 2011\cintools__. Для LabVIEW 2011/2012 лучше не использовать уже имеющуюся папку cintools в каталоге LabVIEW, а создать рядом новую, например cintools__, и поместить туда файлы из вложения в этом сообщении. Это необходимо, т.к. начиная с LV 2010 CIN не поддерживается NI (хотя и работает внутри vi) и из директории cintools удалена часть файлов. Кроме того, в палитре виртуальных инструментов нет иконки CIN, но её можно туда добавить с помощью подпалитры adv.mnu из старых версий LV (см. вложение). Почитайте ещё мануалы Using External Code in LabVIEW и LabVIEW Advanced Course, там есть много примеров по работе с CIN. Дополню этот мануал ещё одним важным замечанием. На нижеописанные грабли сам наступал несколько раз, т.к. информация со временем забывается, поэтому это стоит запомнить. При компиляции DLL для CIN'а в MS Visual Studio 2005 внутрь библиотеки "зашивается" манифест, содержащий зависимости от стандартных библиотек VC++. Если DLL построена в Release-конфигурации, то манифест будет такого вида:
Код: Выделить всё
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
Код: Выделить всё
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
</dependentAssembly>
</dependency>
</assembly>
Решений тут может быть несколько:Code Interface Node: LabVIEW subroutine link error
The external subroutine could not be found
Code Interface Node: object code is not loaded
This Code Interface Node has no code to execute. Right-click the node, select Load Code Resource from the shortcut menu, and select the object code file (.lsb)
1. Поменять конфигурацию билда DLL в MS Visual Studio с Debug на Release и откомпилированную библиотеку (VI с CIN'ом) уже поместить на целевую машину;
2. Установить на целевой компьютер MS Visual Studio или Visual C++ 2005 Express Edition;
3. Создать в MS Visual Studio инсталлер для DLL - способ, конечно, малопригодный для одной маленькой библиотеки;
4. Отредактировать в HEX-редакторе саму библиотеку (точнее, манифест внутри неё) (пробовал и вроде как работает), то есть, нужно заменить строку
на строку<assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
(Проще всего аккуратно поменять DebugCRT на CRT, а оставшееся место затереть пробелами, чтобы размер файла не изменился.)<assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b">
5. Перейти на другой компилятор (MinGW, старый VC 7.1 или 2003, новые версии Visual Studio);
6. Переносить на целевой ПК все манифесты и библиотеки, от которых зависит компилируемая DLL.
Подробно эта история с манифестами обсуждалась на форуме NI, здесь, здесь, частично тут, тут и ещё много где, гугл в помощь.
Последний раз редактировалось dadreamer 15 апр 2015, 20:03, всего редактировалось 2 раза.
-
mzu2006
- doctor
- Сообщения: 2456
- Зарегистрирован: 16 авг 2008, 02:12
- Награды: 3
- Версия LabVIEW: 7.1 10 11 12
- Откуда: St-Petersburg (RU), Phila, Boston, Washington DC
- Контактная информация:
Re: Помогите разобраться с CIN
Полное и подробное описание. Рекомендую! CIN Wizard делает почти всё вышеперечисленное + немного форматирует C код.
Теперь по сути:
0. Не рассказано с какого проекта начать. Win32->DLL->Additional Settings->Empty project
1 Нужно осветить вопрос как туда включить код, сгенерированный LabVIEW по CIN->RMB->Generate C Code
+ Есть несколько лишних вещей:
1. Configuration Properties -> General: лишнее при правильном выборе проекта (как указано выше)
2. Buffer Security Check, Detect 64 bit portability, Supress Startup Banner - по желанию
3. Precompiled Headers не мешает сборке CIN, даже помогает, если Вы привыкли пользоваться MSVC.
Теперь по сути:
0. Не рассказано с какого проекта начать. Win32->DLL->Additional Settings->Empty project
1 Нужно осветить вопрос как туда включить код, сгенерированный LabVIEW по CIN->RMB->Generate C Code
+ Есть несколько лишних вещей:
1. Configuration Properties -> General: лишнее при правильном выборе проекта (как указано выше)
2. Buffer Security Check, Detect 64 bit portability, Supress Startup Banner - по желанию
3. Precompiled Headers не мешает сборке CIN, даже помогает, если Вы привыкли пользоваться MSVC.
Она есть в путях поиска даже в 2012. CTRL-SPACE -> Code interface Node. Её не обязательно переносить из предыдущих версий.dadreamer писал(а):в палитре виртуальных инструментов нет иконки CIN
Правила форума (Forum rules in Russian)
rm -rf /mnt/windows
rm -rf /mnt/windows
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение