Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Подключение библиотек. Visual C++  (Прочитано 64100 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« : 23-03-2004 05:51 » 

Помогите, пожалуста!!!
Посоветуте где почитать, может быть...
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #1 : 23-03-2004 09:08 » 

По-подробнее пожалуйста. О чём речь? О подключении библиотек в виде .h .lib .dll
к проекту. Или о динамической подгрузке DLL? Какая студия? 6я или .NET?
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #2 : 23-03-2004 09:20 » 

Я имела ввиду db library к SQLserv, но и это не все, еще сталкиваюсь с lib не знаю что делать... Жаль
Студия 6.
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #3 : 23-03-2004 11:43 » 

"db library к SQLserv" Не понял никогда такого не делал, может в разделе Базы данных спросить?

А вообще-то подключение довольно простая штука.

Речь идёт о том, где твои функции или классы объявлены. В СРР или LIB.
Поэтому тебе нужны 3 файла (если статическая LIB, то 2).
Например у тебя есть комплект:
MyLIb.h
MyLIb.lib
MyLIb.dll

который находится на в папке MyProject\mylib (проект находится MyProject\myexe - это для примера, чтоб показать использование пути)

Чтоб подключить в 6ой версии, идём в настройки проекта (Alt+F7) -> C/C++

Выбираем категорию Preprocessor и вводим дополнительнй путь (3 окошко ввода сверху)
../MyLib

это позволит делать #include без указания пути - в нашем случае
#include <MyLib.h> вместо #include "..\\MyLib\\MyLib.h"

Переходим на страничку настроек Linker. Выбираем категорию Input (Ввод)
если в списке используемых библиотек уже что-то стоит, то добавляем через пробел :!:  нашу библиотеку:

kernel32.lib user32.lib gdi32.lib winspool.lib MyLib.lib

можно сразу указать путь к ней - "../MyLib/MyLib.lib" ,  но ( если планируется использовать несколько LIB) лучше это сделать в соответствующем месте - доп. пути для библиотек.

Вписываем туда ../MyLib

Нажимаем Ок.

Теперь достаточно инклудировать MyLib.h (например в stdafx.h) и доступ к функциям и классам этой библиотеки готов.

Примечания:
1. Если используется несколько библиотек и они лежат в разных местах, то необходимо перечислить все пути к h- и lib-файлам, через запятую. И все lib-файлы через пробел.

2. Если есть различные конфигурации проекта (напр. Debug и Release), то необходимо выполнить подключение библиотеки в каждой конфигурации.

3. Если вариант с DLL, после сборки она должна находится там, где находится ЕХЕ.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #4 : 24-03-2004 04:44 » 

Спасибо за консультацию!!!! Отлично
Спасибо огромное!!!! Отлично
Но пока я металась в поисках ответа наткнулась на нечто мне не знакомое... Скажите имеет ли эта строка какое-либо отношение к теме??? :idea: #import "msado15.dll"
Я просто впервые увидела в проге #import...  Я шокирован!
Если я не в тему, то простите!!!
Я очень Вам благодарна!!!
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Serega
Гость
« Ответ #5 : 24-03-2004 08:54 » 

msado15.dll это COM-сервер, набор обьектов ADO для доступа к базам данных
директива #import извлекает из файла библиотеку типов (описание обьектов, интерфейсов, структур, перечислений) и создает два файла: заголовки(.h) и реализация(.cpp)
в .h описание всех обьктов и интерфейсов,  структур, перечислений,  и смарт пойнтеров (оборток для удобной работы с COM обьектами)
в .cpp код смарт пойнтеров и все GUID'ы

как приду на работу смогу прислать пример как этим пользоваться
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #6 : 24-03-2004 08:59 » 

Natalie,  Ну во-первых, мы тут вроде все на ТЫ, так что перестраивайся. Ага

Директива #import предназначена для использования т.н. библиотек типов, которые обычно представляют собой СОМ интерфейсы. Проще говоря это позволяет получить доступ к уже существующим модулям (например Excel, Word и тд).

Те можно предположить, что твоя прога работает с базой данных используя её родные методы и классы.

Вчера я "умолчал" о другом способе подключения LIB файлов, который более "сложный" и не такой визуальный.

использование прагмы с параметром comment
#pragma comment(lib,"MyLib.lib")

Так что, если "такое" увидишь, то это тоже относится к теме. Обычно таким образом подготавливаются библиотеки и, тогда, тебе достаточно инклудировать
только #include <MyLib.h>, в котором стоит эта строчка. Но этот метод требует установки путей в настройках VS. Проще говоря, если у тебя есть только один .h файл, проверяешь его на наличие такой прагмы. Если есть, то значит о подключении библиотеки уже позаботились. Ага
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #7 : 24-03-2004 12:11 » 

Спасибо огромное, еще раз, за внимание и понимание.
Тем более это для меня ценно, что в радиусе 200км не наблюдается С++ ориентированных программеров. Жаль
Джон,
Если я перейду на «Ты», то как тогда высказать свое уважение к Вам и Вашим знаниям??? Улыбаюсь Хотя, я попробую… говорят же, в чужой монастырь со своим уставом… Ага
А не визуальные методы я люблю больше всего… Улыбаюсь У меня проблемы с визуальными… Жаль
Приду домой пошарюсь по .h файликам…. Улыбаюсь спасибо.
Serega,
Благодарю за пояснение, у меня действительно идея фикс – подключиться и поработать с базой данных на SQLserv.
Но в связи с Вашим пояснением у меня возник еще один вопрос: если .dll раскладывается на .h и .cpp, то наверное это делается один раз и тогда в приложение вставлять такую строчку не надо? Ее нужно выполнить один раз? (И получим еще плюс два файлика в той же директории???)  И зачем тогда .lib? (простите, за глупый вопрос. Жаль)
И еще, мне очень хочется, чтоб при запуске приложение требовало имя базы данных, логин и пароль. Не подскажите, какими функциями это реализуется? Это, конечно, не в тему… Жаль  Создать новую в базах данных???
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Serega
Гость
« Ответ #8 : 24-03-2004 23:04 » 

Мы с Джоном говорим о разных вещах,а тебе вообще нужно просто соединиться с базой данных Отлично

Начну с того что такое lib.
В операционной системе существуют файлы называемые динамически подгружаемые библиотеки
Это значит что программа во время исполнения может загрузить такой файл к себе в память и вызывать оттуда функции
В Windows такие файлы называются Dynamic-Link Library (DLL)
Для работы с ними существуют две функции:
HMODULE LoadLibrary(LPCTSTR lpFileName);
 - получает имя файла DLL, загружает его в память и возвращает идентификатор библиотеки
FARPROC GetProcAddress(HMODULE hModule, LPCSTR lpProcName);
 - получает идентификатор библиотеки и название функции, возвращает указатель на функцию

Чтобы вызвать функцию из DLL нам нужно сначала загрузить библиотеку, потом получить адрес нужной функции, затем полученный указатель преобразовать к нужному нам типу, т.к. FARPROC это
typedef int (*FARPROC)(void);

в общем мороки хватает и поэтому конечно же было придумано более простое решение - .lib
Это обьектный файл в котором находится код, избавляющий нас от необходимости вручную загружать DLL
При создании DLL помимо самой библиотеки можно создать .lib и .h файлы (в .h находятся заголовки экспортируемых функций)
И в программе использующей эту DLL нужно просто инклудить .h и слинковать .lib (добавить его либо в настройках проекта либо с помощью pragma)
но тут есть и свои минусы:
смещение функций внутри файла в этом случае определяется не динамически (с помощью GetProcAddress), а вычисляется на момент создания DLL, поэтому если DLL обновят и смещения функций изменятся то наша программа будет вылетать с Runtime Error
Поэтому какое решение выбрать зависит от конкретной ситуации

Ну вот вроде обрисовал в общих чертах что такое lib и для чего это вообще
следующая тема :arrow:
Записан
Serega
Гость
« Ответ #9 : 25-03-2004 00:00 » 

Теперь поговорим об import

DLL - это модель повторного использования кода (мы один раз её создали, и кто угодно может её использовать, вызывая нужные функции)
но к сожалению из DLL можно вызывать только функции, а мы уже давно пишем не на функциональных языках а на обьектно-ориентированных
Поэтому MS разработали обьектно-ориентированную модель повторного использования кода и назвали её Component Object Model (COM)
В этой модели мы работаем не с функциями а с обьектами, мы можем создавать их и вызывать их методы

Технологию DLL конечно не забыли и стали использовать DLL'ки для хранения кода COM обьектов

Но помимо файла с кодом COM обьектов нужно еще и описание этих обьектов:
 - его уникальное имя, а точнее номер (CLSID), чтобы мы случайно не создали другой обьект
 - какие интерфейсы поддерживает обьект, чтобы знать что мы можем с ним сделать
 - описание интерфейсов - какие есть методы, какие параметры у методов (интерфейс тоже идентифицируется уникальным номером - IID)
 - описание структур и перечислений, которые помимо базовых типов вполне могут использоваться в качестве параметров

Все это назвали библиотекой типов, а также решили что надобы модель сделать языконезависимой и стали писать библиотеки типов на языке IDL (синтаксис очень похож на C), и при использовании транслировать её в код конкретного языка

Не стану описывать все внутренности работы COM, а то целая статья получится Отлично

Нам важно то, что имея DLL'ку мы можем получить библиотеку типов и транслировать её в код С++
Именно этим и занимается #import

Для начала узнаем как работать с COM ручками

Для работы с COM существует парочка функций:
HRESULT CoInitialize(LPVOID pvReserved);
 - инициализация сервисов COM, должна быть вызвана до начала работы с COM
void CoUninitialize();
 - завершение работы
HRESULT CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID riid, LPVOID * ppv);
- создает нужный нам обьект и возвращает указатель на нужный нам интерфейс

Все обекты COM поддерживают интерфейс IUnknown, у которого всего три метода:
ULONG AddRef(void);
 - добавить ссылку на обьект
ULONG Release(void);
 - удалить ссылку
HRESULT QueryInterface(REFIID iid, void ** ppvObject);
- запросить у обьекта нужный нам интерфейс

Да, обьект COM живет до тех пор, пока на него есть хотя бы одна ссылка, он хранит у себя счетчик ссылок, и как только тот обнуляется обьект удаляет себя из памяти

Ничего сложного в общем-то нет, но много ручной работы (что приравнивается к головной боли)

И конечно же было найдено решение - сделали обертки для интерфейсов - умные указатели
Умные указатели на COM интерфейсы реализуются с помощью класса _com_ptr_t

#import помимо извлечения библиотеки типов и трансляции её на C++ также создает умные указатели для всех интерфейсов

вот практически и все, больше голова не хочет работать, у меня 3:00 Отлично
Записан
Serega
Гость
« Ответ #10 : 25-03-2004 00:02 » 

Завтра напишу что такое ADO

Вкратце это набор COM обьектов для доступа к базам данных
Записан
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #11 : 25-03-2004 05:36 » 

Serega,
Спасибочки... Вы, пишите... пока я соображаю... Отлично
Но вот написание таких текстов в 3:00 - это круто...
Я конечно понимаю, что программеры люди особые... но так себя мучать??? :?:
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Serega
Гость
« Ответ #12 : 25-03-2004 08:53 » 

Просто друг из армии пришел, вот мы и посидели немного Ага
Записан
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #13 : 29-03-2004 04:25 » 

Джон,
я пролистала  .h файлы и снова меня мучают разные мысли.. (характер наверное вздорный... Улыбаюсь)
Если при помощи использования  pragma с параметром comment можно заранее позаботиться о подключении библиотеки, то почему это не делается во всех .h файлах?
Не подумай, что я невнимательно читала Твое пояснение... про указание пути в настройках я помню, но почему бы не размещать эти файлы стандартно, в одном каталоге? Когда Ты говорил об указании пути в настройках, это имелся ввиду путь к .lib файлу? Так почему бы все .lib просто не помещать в директорию \lib?
Serega,
я осмысливаю и усваиваю... Улыбаюсь Ты не против, если я завтра задам еще пару вопросов?
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Serega
Гость
« Ответ #14 : 29-03-2004 07:47 » 

Конечно не против
Помещать все файлы в одно место идея харошая, но возникает проблема с версиями
Записан
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #15 : 29-03-2004 08:00 » 

Serega,
Ты имеешь ввиду версии библиотек или версии студий... типа на одном рабочем месте много разных???
И еще, если ты говоришь о версиях библиотек, то зачем держать старые версии??? Или это на случаей если в новых чего то не работает???
Как друг, жив после ночного бдения? Ага
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #16 : 29-03-2004 09:51 » 

Версии библиотек - к h файлам не относится версия студии разработки!

Где ж вопросы Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #17 : 29-03-2004 12:12 » 

Гром,
Ваше величество,  Отлично
Да, полностью согласна, но библиотеки то могут обновляться, а следовательно и .h файлы, соответствующие этой библиотеке, должны обновиться... :?:
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #18 : 29-03-2004 13:39 » 

НЕ всегда - скажем - происходит стандартный фикс багов при котором заголовки не сменились Улыбаюсь
Записан

А птичку нашу прошу не обижать!!!
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #19 : 29-03-2004 13:44 » 

Да и потом - речь шла об разработке т.е. о состоянии еще в исходниках!
Записан

А птичку нашу прошу не обижать!!!
Serega
Гость
« Ответ #20 : 29-03-2004 15:23 » 

Друг жив Ага
Уехал дослуживать оставшиеся 2 месяца
Записан
Serega
Гость
« Ответ #21 : 29-03-2004 15:49 » 

Natalie, с тобой интересно общаться, не каждый день находится человек задающий интересные вопросы и по делу :!:
А имел я ввиду вот что:
допустим мы написали библиотеку mylib, и у нас есть 3 файла: mylib.dll, mylib.lib, mylib.h, это наша первая версия билиотеки
у нас есть программа написанная с использованием нашей библиотеки версии 1.0
потом мы написали версию 2.0, в которой немного изменили названия функций и их параметры
теперь чтобы наша программа не перестала компилироваться нам надо либо по другому назвать файлы новой версии библиотеки либо просто заменить старые файлы новыми и переписать программу под новую версию
думаю переписывать работающий никому не хочется, значит будем называть по-новому, допустим к имени файла будем дописывать номер версии, например так mylib2.dll
теперь у нас вместо 3-х файлов уже 6, и это только основные версии, а могут быть и промежуточные и для них тоже надо придумать систему именования, но это в принципе мелочи, достаточно подумать один раз Ага
в принципе такой подход достаточно удобен если среда разработки ведет контроль версий и позволяет дописывать номер версии к названию
и в любом случае лучше куча файлов в одном месте, чем если бы они были разбросаны по всему винту Отлично
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #22 : 30-03-2004 00:30 » 

Natalie,  

1. На "Ты" с большой буквы - это класс! Можно так выразиться - "вежливо тыкать"  Отлично . Короче сам напросился.

2. Теперь про мысли... В принципе тебе тут не дают скучать (тем паче, что с базами данных я не игрался, тут уступаю слово Серёге ). Просто хочу добавить про библиотеки. На самом деле всё гораздо проще. Есть два пути подключения внешних модулей (эт я чтоб не писать lib и dll) к проекту в студии. Первый - назовём его глобальный. Это когда в настройках выставляются глобальные пути к lib h exe dll файлам а также файлам исходных кодов (те это не обязательно должны быть lib-ы). Эти настройки делаются в независимости от проекта. И всегда будут опрошены на предмет наличия необходимых ресурсов. Таким путями являются пути к MFC SDK WTL и тд пример:
"стандартный" набор в моей "шестёрке"
C:\Programme\Microsoft Visual Studio\VC98\INCLUDE
C:\Programme\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Programme\Microsoft Visual Studio\VC98\ATL\INCLUDE

эта строчка добавилась после инсталляции платформы SDK
C:\Programme\Microsoft SDK\include

а эту я вставил вручную для поддержки WTL
C:\PROGRAMME\MICROSOFT VISUAL STUDIO\VC98\WTL\INCLUDE

Итак, пользователь зачастую даже не подозревает об использовании этих глобальных путей и модулей (ошибки типа - на моём компе всё работает, а вон на том нет). Необходимые h файлы и define уже как правило вставлены в код мастером проекта.

Глобальный способ нужен для часто используемых вещей, от которых зависит жизнь многих проектов. Было бы неудобно каждый раз проводить вручную одни и те же настройки. Поэтому и используется способ "уменьшения" видимой информации. Когда окнечный пользователь видить, что-нить типа #include <MyLib.h> и всё.

Второй - соответственно локальный способ (механизм которого я приводил)- применяется в единичных случаях, когда настройки для каждого проекта производятся в отдельности, да мало сказать для проекта, для каждой версии, компиляции и тд (Debug,Release, Unicode). Ведь не обязательно, что для релиза и дебага испльзуется одна версия lib. Например могут быть МyLib.lib и MyLibD.lib соответственно. И тем не менее у них один и неизменный h файл.

Объективно конечно трудно сказать, что лучше, а что хуже. Как говорится Cuique sum, что в вольнои переводе означает Кесарю кесарево, а слесарю слесарево.  Ага Так что можно делать и так:
 
Цитата: Natalie
Так почему бы все .lib просто не помещать в директорию \lib?


и по-другому в зависиости от ситуации.

зы Ох и наплёл про лес Ага .

Serega,  А вот по ночам не спать - это заразно? Ага До твоих 3х я наверно не дотяну.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #23 : 30-03-2004 00:34 » 

Гром, а часы-то барахлят. Уже 02:33
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #24 : 30-03-2004 04:19 » 

Доброго дня Вам, Уважаемые господа программеры. Улыбаюсь
Сейчас я буду по быстрому портить впечатление о себе глупыми вопросами... Отлично
К сожалению последние Ваши комментарии прочесть не успела... Жаль
Может в них все ответы???
Прошу прощения, еще раз за собственную глупость и неуспевание... Жаль
Гром,
К сожалению, я полный день на работе, (администрю потихонечку... и это с моими то знаниями... Жаль() а читаю умные книги и советы только дома, вечером, ночью... а потому и вопросы формируются с регулярностью в одни сутки... Жаль Хотелось бы чаще, но не могу бросать на произвол судьбы своих пользователей... как никак – движущая сила любой автоматизации – люди, операторы, специалисты, а когда они чувствуют себя «брошенными», то работают хуже... итог моей работы, в данный момент, зависит от их усилий не менее, чем на 80%.  
Я периодически почитываю Вашу рассылку, но никогда не думала, что можно задать вопрос Вам непосредственно... Улыбаюсь) А собака у Вас – СУПЕР!!!! Как Вы с ней ладите? (это первый вопрос:)))
Serega,
Спасибо за такое подробное пояснение, от смущения за свое не знание, хочется спрятать голову в песок, как страус... Улыбаюсь)) но, что делать, как кто-то сказал, асфальт кругом. Жаль
1. Что значит: «идентификатор библиотеки» -это что-то типа ссылки на область памяти, в которую загружена библиотека?
2. И что значит фраза: «полученный указатель преобразовать к нужному нам типу»
Каким образом, получив такой указатель, можно преобразовать его к другому типу? (имеется ввиду полное определение вызываемой функции? т.е возвращаемое и требуемые значения?)
3. «его уникальное имя, а точнее номер (CLSID), чтобы мы случайно не создали другой обьект» Можно поподробнее про CLSID??? Т.е. создание объектов каким-то образом стандартизировано?
4. Ты обещался про ADO рассказать поподробнее... pls.
Идея (не моя в корне) состоит в том, что я рассчитывала строить подключение через ODBC... Это все каким-то образом завязано???
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Serega
Гость
« Ответ #25 : 30-03-2004 08:13 » 

Вечером обязательно отвечу на все вопросы, а сейчас убегаю на работу
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #26 : 30-03-2004 18:37 » 

Народ. Пора заканчивать по-ночам писать. Я ща тему еле нашёл (хорошо хистори исправно работает). А всё почему? Да потому что она в "Java" :!:

Эй хто нибудь из админов - перенесите в С++ для ОС.
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #27 : 31-03-2004 04:25 » 

Джон,
Спасибочки... все понятно, доступно и вполне разумно...  Улыбаюсь  Хотя для ночи, это все ж нонсенс...  Жжешь  Что-то подхватил нас всех ветерок ночных бдений...  Ага
Короче, тот вопрос из-за которого я так расстраивалась получил более чем достойный ответ...  8)
Но проблема в том, что у меня других вопросов много!!! А еще мне очень понравилось с вами общаться...  Отлично  Я просто счастлива, что Вы такие добрые, хорошие и умные!!! Вот.  Улыбаюсь

Serega,
Армия... это же еще до ВУЗА... я не ошибаюсь?  Я шокирован!
И правда, говорят, что все от человека зависит!!!  Быть такого не может
Такие знания добытые самостоятельно - это СУПЕР!!! /*продолжаю удивляться*/  Улыбаюсь

А вот теперь по теме... :?
Я тут по ночам усиленно просвещаюсь и иногда встречаю в текстах идеи, которые меня пугают... Я шокирован!
Например:
1. #import "C:\Program Files\Common Files\System\ado\msado20.tlb" \
        rename("EOF","ADOEOF") rename("BOF","ADOBOF")
"... атрибут rename, его необходимо использовать, когда возникают конфликты имён свойств и методов библиотеки типов с препроцессором."
Это что же, надо наизусть знать все имена свойств и методов библиотеки, а так же все подобное во всех подключаемых .h файлах? Я шокирован! А самое главное, вовремя и адекватно отреагировать, - не забыть переименовать?
Что-то здесь "не чисто"... Жаль
Я понимаю, что моя человеческая оперативка оставляет желать лучшего, но неужели это так фатально?  Так больше нельзя...
Нет, я только ЗА, что нужно "от корки до корки" знать подключаемую библиотеку... но как-то это... :new_shot:

2.  "Чтобы клиент мог получитть доступ к COM объекту, тот должен быть зарегистрирован в реестре Windows. " .... оопс.. еще один прикольчик!!! Молчу
Снова нюанс, который требует пояснения... :!:
Нет, все понятно, когда библиотека содержит свой инсталлятор, как и выше упомянутая db library, а если не содержит??? как прописываются в реестре библиотеки??? :?:

3. "В частности, в реестре прописываются CLSID и IID." - кто придумывает эти уникальные идентификаторы??? программер создающий library??? Где тогда гарантия, что они будут действительно уникальны??? :?:
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Natalie
люблю программирование
Постоялец

ua
Offline Offline
Пол: Женский

« Ответ #28 : 31-03-2004 04:30 » 

Джон,
Странно... я вроде в разделе "для начинающих" вопросик задала. :?:
Записан

...вся жизнь, по сути своей, делает нас сильнее... )))
Serega
Гость
« Ответ #29 : 31-03-2004 15:50 » 

наизусть знать конечно ничего не нужно (вообще много знать вредно =)
в случае чего компилятор тебе всегда напомнит Ага
Записан
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines