|
|
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Я написал простую программу ComBase, скомпилировал. Когда я переношу свою прогу на чужой комп, то там она на запускается, а выдаётся сообщение об ошибке, что нехватает библиотек: comdlg32.ocx, msvbvm60.dll, .... В моём-то компе они хранятся в папке System32. На чужой комп можно переносить эти библиотеки в каталоге с программой, но хотелось бы отдельный исполняемый независимый файл Вопрос: Как скомпилировать прогу так, что бы все нужные библиотеки находились в нём, внутри.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:21 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
создать свою инсталяшку Programm > microsoft Visual Studio6>Package & Deployment Wizard ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:26 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что этот Wizard делает вообще дистрибутив... а это мне совсем не кстатати.... или он может впихивать библиотеки в исполняемую программу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:27 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Создай батник, который прорегистрирует эти библиотеки на другом компе. Можно поставить бэйсик на тот комп. или использовать createobject. тада библиотеки не понадобятся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:46 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
А можно про createobject поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 16:52 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
А почему вас не устраивает общепринятый способ установки? Касательно CreateObject, GetObject - так ведь если нет чего-то на другой станции, как это может помочь? И, кстати, если таки не устраивает, то перепишите на VB.NET, а потом путем XCOPY переносите на другой PC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:05 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Ну например для того чтобы присоединиться к база данных, ты пишешь Dim con as adodb.connection Set con = new adodb.connection и тд и тп. и для этого надо подключать библиотеки. А можно через createobject. dim con Set con=createObject("Adodb.connection") и тада никаких библиотек не надо подключать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:07 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConn: Я б с радостью переписал! Да не могу... уж сильно отличаются эти языки: у меня в проге 18 577 строк кода... В том числе, работа с принтером, работа со строками фиксированной длины etc. Ввиду сильного различия языков, полностью программа не преобразовывается в проект VB.NET - нужно переписывать то, что я начал писать ещё, можно сказать, в детстве)) 3 года назад. И ещё не известно, сделет ли она там какие-нибудь логические ошибки в результате преобразования(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:13 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
И это будет работать на другом компьютере, где нет Adodb? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:13 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
ОК, я просто посчитал, что вы написали простую программу ComBase... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:15 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Будет, например на VBS ваще нельзя подклюсчать библиотеки. именно с помощью CreateObject и обходятся ( по крайней мере в этом случае) без библиотеки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:16 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Slice VladConn SliceSet con=createObject("Adodb.connection")И это будет работать на другом компьютере, где нет Adodb?Будет, например на VBS ваще нельзя подклюсчать библиотеки. именно с помощью CreateObject и обходятся ( по крайней мере в этом случае) без библиотеки Не стоит давать необдуманных ответов. Что, по-вашему, CreateObject создаст в таком случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:22 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Объект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:27 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Да, насколько я понимаю, CreateObject создает и возвращает ссылку на об"ект СОМ, но ведь не сам же об"ект? Я лично всегда старался избегать CreateObject как наименее эффективный способ работы с СОМ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:28 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Постойте.. откуда он вообще объект-то создаст, если самой библиотеки нету? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:29 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Вот-вот, и я о том... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:31 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
тада делай через бат файл. если не хочешь возиться с createObject. Не исключаю возможности, что просто не удастся в твоем случае использовать креэйтобжект, но именно с ADODB это работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:34 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Я всегда считал, что CreateObject в VB6 требуется исключительно для "недоделанных" компонентов СОМ, которые не поддерживают "As New". В остальных случаях - зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:36 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
А чем ВАТ файл лучше стандартного дистрибутива? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:38 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Так вот, CreateObject НЕ РЕШИТ проблему физического отсутствия библиотеки. БАТ файл тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:42 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
чтобы стопроцентно работало на других компах. попробуй законектится к серваку через NEW и скопирнуть на комп, где нет вижал бэйсика. Ничего не будет работать. а с Createobject - будет. собственно вот... я думаю, что это не главное отличие и может приимущество, но очень удобно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:42 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Как это бат не решит??? с помошью него просто прорегистрировать библиотеку можно на другом компе. скопировав эти библиотеки с компа с вижал бэйском ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:44 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
К какому серваку.... в библиотеке много того, чем я не пользуюсь. Если бы только нужные данные я мог бы перенести из библиотеки в исполняемый код, тогда бы моя прога влезла бы на дискету. А так, библиотеки занимают по несколько мегов. И когда я переношу прогу где стоит девственно чистый 95....XP, ничего не грузится. Моя цель - взять всё нужное из библиотек, а всё лишнее - выкинуть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:45 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
видимо я не допонимаю.... сорри что нафлудил и ввел всех в заблуждение. Видимо говорили о разных вещах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:48 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
А так - не решит, если самих библиотек нет. Вы жа сами говорите - их надо все равно переносить. А в таком случае нужна инсталляция. Получается, вы пытаетесь подменить стандартную инсталляцию паллиативом собственного производства. Вы и компилятор будете писать свой? Вдруг VB нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:48 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConnЯ всегда считал, что CreateObject в VB6 требуется исключительно для "недоделанных" компонентов СОМ, которые не поддерживают "As New". В остальных случаях - зачем? Ого. Не ожидал. Для того, чтобы создать экземпляр класса на другом сервере. Для того, чтобы создать экземпляр класса в новом потоке. например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:50 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConn запутался чуток в расуждениях.... Ведь на одном компе все есть ( и прога работает и библиотеки нашлись) зачем тада компилятор нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:54 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
ОК, а что, "As New" в этом случае работать не будет? Обязательно позднее связывание? Мне никогда не требовалось использовать CreateObject, потому и спрашиваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:55 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Slice, я не запутался Бенедикт, поток - это в английской терминологии thread, также? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:33 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConn, позднее связывание - это работа через IDispatch, а не напрямую через vtbl, для программы и отсутствие полезных фишек типа AutoCompletion для программиста. К способу создания экземпляра отношения не имеет, разве что выполняя Set NewItem = CreateObject("MyLib.MyItem"), программа тратит время на проверку типа объекта, т.к. CreateObject возвращает Object. Если NewItem описан As MyLib.MyItem (библиотека типов MyLib упомянута в References), дальнейшее обращение к свойствам/методам пойдёт через vtbl. Для указанных мною случаев: 1) у New нет синтаксиса для явного указания сервера. Ну нет на клиентской машине сервера приложений, он стоИт на серверной машине, как тогда создать экземпляр? 2) использование New не приведёт к желаемому эффекту - экземпляр MultiUse класса создастся в основном потоке (кстати, под IDE и CreateObject сделает то же самое). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:40 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConnSlice, я не запутался Бенедикт, поток - это в английской терминологии thread, также? Да. Еще один аргумент в пользу CreateObject - чтобы не держать постоянно лишних объектов (ссылок) в памяти. Создал объект - использовал - убил. Возникла ошибка при создании - прога не отвалилась (как в случае с референсами), а просто выругалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:40 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Melkiades, угу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:42 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Melkiades, Я думаю, совсем не обязательно использовать CreateObject для того, чтобы не держать лишних ссылок в памяти. Разве Set Nothing здесь не достаточен? Что касается вопроса отвалится программа или нет - так я пишу соответственно поддержку ошибок. Но может я и чего-то не знаю. В таком случае было бы здорово увидеть живой код, иллюструющий бессилие On Error и полезность CreateObject, чтобы программа не отваливалась. Бенедикт, Спасибо за информацию о серверах и потоках. Насколько я знаю, VB6 не очень приспособлен для многопоточных задач, хотя в принципе можно. VladConn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:55 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Посмотрел внимательнее на CreateObject. Да, там опция на имя сервера. Я бы не стал на нее надеяться: сервера могут меняться. Все-таки инсталляция надежнее. А что касается многопотоковости - использование VB6 не лучшая идея для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 20:25 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
[quot VladConn]Я бы не стал на нее надеяться: сервера могут меняться.[/qout] Строковые параметры могут меняться, это точно . Настраиваемые параметры принято где-нибудь хранить - например, в реестре. [quot VladConn]Все-таки инсталляция надежнее.[/qout] Инсталляция чего? Поставить MDAC, чтоб ADODB.Command создавать локально, можно на любую клиентскую машину, а поставить какой-нибудь DCOM-сервер можно (исходя из логики приложения, цены, настроек безопасности...) только на одну специально выделенную машину, и пользоваться им будут десятки клиентов. Или технологии клиент-сервер и DCOM стали не нужны? Насчёт многопоточности. В MSDN Library в разделе "Visual Basic Concepts" (подчёркиваю - Concepts ) есть глава "Scalability and Multithreading", есть пример "Creating a Multithreaded Test Application". Да, с точки зрения человека, привыкшего к CreateThread, EnterCriticalSection и WaitForSingleObject, это не совсем та многопоточность (хотя можно что-то подсмотреть у того же Matthew Curland-а что-то в этом роде). Это многопоточность в русле COM (да и с точки зрения ОС потоки вполне нормальные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 23:24 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Тут кстати у меня еще всплыло соображение насчет дистрибутива. Допустим, приложение использует библиотеки Excel. Вы, я, все-равно, составляем инсталляционный пакет, включающий нужные библиотеки. А как делать деплоймент на станцию, где нет Excel? Легально как? Ведь нужен лайсенс. Получается, что нужен-таки CreateObject еще и из соображений легальности? Мол если есть библиотека, то она подхватится, а нет, так у нас нет прав на ее установку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 15:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=60&tid=2165227]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 547ms |

| 0 / 0 |
