Нужно ли при установке регистрировать msvbvm60.dll?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Нужно ли при установке регистрировать msvbvm60.dll?

Сообщение jangle » 23.07.2007 (Пн) 16:46

По идее, наверное надо, но если не регистрировать, тоже все работает. Более того, если сделать на своем компе:

regsvr32 /u c:\windows\system32\msvbvm60.dll

После этого все программы написанные на VB нормально работают, и VB IDE тоже. Как это объяснить? При инициализации msvbvm60.dll сама себя регистрирует в реестре?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.07.2007 (Пн) 16:50

Нафига?
regsvr32 используется для регистрации ActiveX-компонентов.

Может и банальность, но на всякий случай повторю.
Native-библиотеки регистрировать не надо. Достаточно, чтобы они размещались в каталоге программы, каталоге system32 или в Path. Ну или в декларации указывать полный путь.
Lasciate ogni speranza, voi ch'entrate.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 23.07.2007 (Пн) 16:55

Нафига?
regsvr32 используется для регистрации ActiveX-компонентов.


msvbvm60.dll это вроде как COM DLL, у нее есть функции

VBDllUnRegisterServer
VBDllCanUnloadNow
VBDllRegisterServer
VBDllGetClassObject

и должна работать только после регистрации в реестре, но она работает и без нее, сама себя регистрирует?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 23.07.2007 (Пн) 17:02

И что с того, что у нее есть эти функции?
Lasciate ogni speranza, voi ch'entrate.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 23.07.2007 (Пн) 17:10

И что с того, что у нее есть эти функции?


Это функции ActiveX DLL, тем более, что у msvbvm в ресурсах лежат TLB

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.07.2007 (Пн) 17:26

Нет, функции ActiveX DLL не такие, а без "VB" в начале названия.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.07.2007 (Пн) 21:42

У неё и без "VB" в начале функции есть. И это всё-таки com-библа. Но не всякая com-библа нуждается в регистрации.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 23.07.2007 (Пн) 22:16

Хакер писал(а):У неё и без "VB" в начале функции есть. И это всё-таки com-библа. Но не всякая com-библа нуждается в регистрации.


Да, точно DllRegisterServer, DllUnregisterServer есть. Видимо это смешання либа, COM и Native в одном файле. Правда непонятно, зачем ее тогда регистрировать в реестре, так делает инсталлятор PDW

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.07.2007 (Пн) 22:19

Видимо это смешання либа, COM и Native в одном файле.


LOL :lol:

Любая библа - Native DLL.


COM-библа, частный случай Native-библы. У COM-библы есть отличительные особеннсти: например то, что экспортируется всего несколько функций, главная из которых - DllGetClassObject.

Но налачие у библы этих функций и её КОМ-истость никак не запрещает ей экспоритровать и другие функции.

Так что понятие "смешанная библа", скажем так, бредовое.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 23.07.2007 (Пн) 22:27

jangle
Вообще-то это функции рантайма, которые вызываются из тех, что экспортируются из VB'шной ActiveX DLL. А по поводу "смешанных", то ActiveX DLL называется так чисто условно - она просто поддерживает стандарт.
Кстати, VB-программа создаёт объекты своего рантайма минуя CoCreateInstance
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 23.07.2007 (Пн) 22:39

Кстати, VB-программа создаёт объекты своего рантайма минуя CoCreateInstance
Более того, CoCreateInstance не сможет создать объекты Vb-шного рантайма(если речь идет о textbox к приеру) потому что ничего про них не знает...
jangle
Native Dll это такой странный термин. Любая dll есть native dll. Есть еще термин stdcall dll. Кулхацкеры они народ плодовитый... на термины и на прочее
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 23.07.2007 (Пн) 22:42

Eще вопрос по секции ENGINE в MSVBVM. Это что, движок интерпретатора? Можно ли всю секцию занопить, если MSVBVM юзает EXE cкомпиленный в native-code?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 23.07.2007 (Пн) 22:42

...а VC6 мне позволяет экспортировать, кроме функций, ещё переменные и классы.
Это тоже будет Native DLL?

(схоластика-то какая, аж жуть)
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 23.07.2007 (Пн) 22:44

Есть еще термин stdcall dll

Неужели? И что этот термин обозначает? Библу, состоящую из одних лишь функций, использующих stdcall функции? А кто сказал, что функции в библе вообще должны придерживаться какого-то соглашения? И кто сказал, что функции будут лишь одного соглашения? И, самое главное, какая связь между Native DLL и StdCall DLL ?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.07.2007 (Вт) 8:14

jangle писал(а):Eще вопрос по секции ENGINE в MSVBVM. Это что, движок интерпретатора?

Нет. Откуда взялись фантазии про интерпретатор?
VB всегда был компилятором.
И там не движок, а виртуальная машина. Большая часть операторов VB вызывает соответствующую процедуру из MSVBVM, по крайней мере при компиляции в P-Code.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 24.07.2007 (Вт) 8:47

alibek писал(а):Нафига?
regsvr32 используется для регистрации ActiveX-компонентов.
Может и банальность, но на всякий случай повторю.
Native-библиотеки регистрировать не надо. Достаточно, чтобы они размещались в каталоге программы, каталоге system32 или в Path. Ну или в декларации указывать полный путь.


Вообще-то MSVBVM60.DLL - это ActiveX файл. :lol:
Так что его, по хорошему, регистрировать надо.

А так - он уже давно есть по умолчанию на подавляющем большинстве машин...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 24.07.2007 (Вт) 9:01

alibek писал(а):Нет. Откуда взялись фантазии про интерпретатор?
VB всегда был компилятором.


Вот здесь написано :)

http://www.dotfix.net/module.php?module=@6e786b366a6a70736a6a5f756b

Как я уже говорил Visual Basic имеет собственную виртуальную машину - так называемую Micro$oft Visual Basic Virtual Machine 6.0 (MSVBVM60.DLL). Движок интерпретатора содержится в секции Engine этой библиотеки и работает только в том случае, если вы компилируете программу в p-code.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.07.2007 (Вт) 9:10

Навряд-ли среду исполнения P-code можно называть интерпретатором. В этом смысле ассемблер тоже является интерпретируемым языком, так же как и .NET и Java.
Настоящим интерпретатором был GW-BASIC и было это в 86 году.
Уже QBasic являлся компилятором, а VB был компилятором по меньшей мере с третьей версии.
Lasciate ogni speranza, voi ch'entrate.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.07.2007 (Вт) 9:33

alibek писал(а):Навряд-ли среду исполнения P-code можно называть интерпретатором. В этом смысле ассемблер тоже является интерпретируемым языком, так же как и .NET и Java.
Настоящим интерпретатором был GW-BASIC и было это в 86 году.
Уже QBasic являлся компилятором, а VB был компилятором по меньшей мере с третьей версии.

Этот спор здесь уже вёлся :-)
Тогда порешили, емнип, считать все виртуальные машины интерпретаторами.
Ассемблер будет интерпретируемым языком, если он выполняется виртуальной машиной вроде ntvdm, и компилируемым, если настоящей железкой.
Изображение

jangle
Википедик
Википедик
Аватара пользователя
 
Сообщения: 3013
Зарегистрирован: 03.06.2005 (Пт) 12:02
Откуда: Нидерланды

Сообщение jangle » 24.07.2007 (Вт) 9:42

alibek писал(а):Навряд-ли среду исполнения P-code можно называть интерпретатором. В этом смысле ассемблер тоже является интерпретируемым языком, так же как и .NET и Java.
Настоящим интерпретатором был GW-BASIC и было это в 86 году.
Уже QBasic являлся компилятором, а VB был компилятором по меньшей мере с третьей версии.


Видимо автор статьи имел ввиду интерпритацию кода в IDE среде, когда нажимаешь кнопочку F5. Никакой компиляции в p-code при этом не происходит, в противном случае, подобный код даже не запускался бы:

Код: Выделить всё
Option Explicit

Dim z As Long

Private Sub Command1_Click()
    z = "hello"
End Sub


Ошибка в IDE проявляется когда нажимаешь кнопку Command1, значит здесь просто обычный интерпритатор

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 24.07.2007 (Вт) 9:43

Не обычный, а JIT-компилятор.
Благодаря ему многомеговая прога с тыщей форм запускается мгновенно, а не после получасовой компиляции.

Ну, и кнопку Ctrl+F5 тоже не отменяли.


Наконец, пока прога работает под IDE, к ней не имеет никакого отношения движок из msvbvm; под ним выполняются только скомпилированные проги.
Последний раз редактировалось tyomitch 24.07.2007 (Вт) 9:45, всего редактировалось 1 раз.
Изображение

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.07.2007 (Вт) 9:45

jangle писал(а):Никакой компиляции в p-code при этом не происходит, в противном случае, подобный код даже не запускался бы:

Тем не менее, при нажатии F5 программа именно компилируется.
Нажми Ctrl+F5.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 29

    TopList  
cron