Страница 1 из 1

Распаковка packed library (.lvlibp)

Добавлено: 07 май 2018, 16:36
Michae_l
Здравствуйте. В LabView я работаю недавно и ещё не вполне разобрался с библиотеками.

Подскажите, пожалуйста, существует ли в LabView возможность распаковать уже запакованную библиотеку (packed library c расширением .lvlibp)? Дело в том, что я сейчас переделываю проект, доставшийся мне от инженера, работавшего до меня, и мне необходимо изменить некоторые typedef's, которые расположены в запакованной библиотеке, а внести эти изменением никоим образом не выходит. Мне кажется, это именно из-за того, что typedef's расположены в запакованной библиотеке.

Если нельзя распаковать - может быть быть можно как-то перепаковать?
Версия LabView: 2017.

Заранее спасибо за помощь!

Re: Помогите пожалуйста новичку

Добавлено: 07 май 2018, 17:07
Kosist
Распаковать/изменять нельзя. Нужно иметь исходную библиотеку (lvlib), делать в ней изменения, и забилдить снова.

Re: Помогите пожалуйста новичку

Добавлено: 07 май 2018, 17:14
dadreamer
Сами :vi: -шки вытащить можно, также как и из скомпиленной DLL или EXE, но есть одно большое НО:
NI писал(а):LabVIEW packed project libraries (.lvlibp) are a new LabVIEW file type that combines a project library and all of its referenced VIs and dependencies into a single file. Packed libraries are created via a build specification in which an existing .lvlib file is selected as the source and its publicly scoped VIs define an exported VI interface. The definition of exported VIs is similar to how a LabVIEW DLL is configured; but, unlike in a DLL where the VIs become functions callable by external code, the exported VIs contained within a packed library behave like regular VIs. They can be dropped on another VI’s block diagram, called programmatically, or linked to by a palette. VIs within a packed library are compiled for a particular OS, target CPU, and LabVIEW version. They receive a new namespace based on the packed library’s name and are optimized by removing block diagrams (and front panels for dependencies), disabling debugging, and consolidating type information. Because a packed library is a built file, it cannot be edited but it can be viewed in the LabVIEW Project Explorer just like project libraries.
Так что толку от таких :vi: ...

Re: Помогите пожалуйста новичку

Добавлено: 07 май 2018, 17:59
Michae_l
Kosist и dadreamer, спасибо за оперативные ответы!
Распаковать/изменять нельзя. Нужно иметь исходную библиотеку (lvlib), делать в ней изменения, и забилдить снова.
Под "забилдить" вы подразумеваете в проекте выбрать Build Specifications и затем New»Packed Library ? Подскажите, что указывать как top-level file в этом случае? Исходную библиотека .lvlib должна быть добавлена в проект или достаточно, чтобы она находилась в папке проекта?

Сами :vi: -шки вытащить можно, также как и из скомпиленной DLL или EXE, но есть одно большое НО
Каким образом можно вытащить эти файлы? В запакованной библиотеке все файлы в формате.ctl, один из таких файлов мне как раз и надо изменить. Так что вариант вытащить файл, изменить его и снова добавить в библиотеку меня устроит.

Re: Помогите пожалуйста новичку

Добавлено: 07 май 2018, 20:31
dadreamer
Michae_l писал(а):Каким образом можно вытащить эти файлы? В запакованной библиотеке все файлы в формате.ctl, один из таких файлов мне как раз и надо изменить. Так что вариант вытащить файл, изменить его и снова добавить в библиотеку меня устроит.
Не получится его изменить. Я уже выше написал, точнее, процитировал, почему. Это скомпилированный код, нечего там менять. Кроме прочего, в каждый файл, привязанный к lvlibp, пишется путь к библиотеке (ресурс LIBN). Такой файл даже открыть не получится, :labview: будет ругаться, что не найдена родительская библиотека. Ну, и финальный гвоздь в крышку гроба - современные :labview: по дефолту используют Fast File Format при компиляции lvlibp. На выходе получается ресурс LEIF, а не LIBPLBVW, который хоть как-то можно было распаковать "бытовым" архиватором. Как открыть LEIF, я без понятия, да и времени нет на то, чтобы это реверсить. :dntknw:

Re: Распаковка packed library (.lvlibp)

Добавлено: 08 май 2018, 20:55
Kosist
Отсюда вывод: lvlibp - это зло. А сколько головной боли из-за перелинковывания виаек, родителей, конфликты... Единственная выгода - это дистрибуция одного файла. Но выгода довольно таки сомнительная...
Michae_l, а не будет ли проще переписать либу с нуля? Или очень много работы?

Re: Распаковка packed library (.lvlibp)

Добавлено: 08 май 2018, 22:09
dadreamer
Kosist писал(а):Отсюда вывод: lvlibp - это зло.
Даже большее, нежели llb. Из тех хоть полноценные ВИ-айки достать можно. А эти тупо скомпилированы как динамическая библиотека, суть - загрузчик + ресурсы, урезанные по максимуму. Самое то, если надо кому-то предоставить демо-версию своих :vi: , а исходники "светить" не хочется. :D Такие либы где-то помимо :labview: той же версии даже не подключить никак, настолько специфичная штука.

Re: Распаковка packed library (.lvlibp)

Добавлено: 09 май 2018, 11:42
Michae_l
Спасибо большое за помощь! Я сделал как посоветовал Kosist: нашёл исходную библиотеку и перепаковал её.
Отсюда вывод: lvlibp - это зло.
Очень согласен. Заново что-то переделывать у меня ещё опыта маловато, поэтому приходится идти проторенными путями. Так что учусь потихоньку!