l_inc Не всегда же быть серъёзным. ^) А вообще это как-бы намекает, что не надо использовать сишные интерфейсы в C++.
вас принимают за школьника когда вы уже 6 лет им не являетесь, что есть чем гордиться. Самое смешное что так и есть, и не надо спорить, плавали знаем.
Booster Ну не для всего WinAPI есть класс-ные интерфейсы... Или если нужно использовать third-party-dll, где функция может менять объект, а может и не менять, но гарантированно не меняет для данного набора параметров, то ИМХО const_cast подходит как нельзя лучше. Rel Так и было грустно...
Ребят, подскажите плиз какую команду нужно дать CL , чтобы он при компиляции исходника подрубил библиотеку? Вообщем скомпилил для теста библиотеку dll (из lib.h и lib.cpp). Потом пытаюсь скомпилить main.cpp, в нем деректива есть #include "lib.h". Три файла (main.cpp lib.h lib.dll) в одной папке. h-ник нормально подрубается, но компоновщик не может разрешить ссылки на функции из библиотеки. Какую команду надо дать CL,чтоб он подрубил библу?
Я хочу сделать, чтобы был h-ник - интерфейс, а реализация функций хранилась в библиотеке в машинном коде, а не в исходном. В линухе раньше это делали спокойно,а в Винде первый раз и никак, засада! Черт знает как библиотеку подрубать. Пробывал cl main.cpp mybibl.dll -никак. Может библиотеку надо не в dll а в lib компилировать.
ФУ получилось. Спасибо Great Оказалось вот так надо: 1) Создание библиотеки cl mylib.cpp lib mylib.obj 2) Компиляция проекта с подключением библиотеки cl main.cpp mylib.lib
К DLL библиотека с импортом (LIB) должна быть ещё - её подключать надо. То что ты написал - это статическая библиотека, а не DLL.
Совершенно верно. Сейчас только понял разницу между LIB(статической библиотекой) и LIB(библиотека с импортом для DLL) - вот ведь какую путаницу сделали. Собрал также динамическую библуху DLL и подрубил её к проекту(естественно все через консоль - так проще). Потренировался немного подрубать библиотеки. Насчет статических библиотек все понятно - идет h-ник и .lib(подрубать их не сложно). А вот с динамическими вопросы возникают... Они что идут в комплекте - .dll .lib(библиотека импорта) и h-ник? При отсутствии одного из этих файлов подрубить практически нереально. А в Windows dll-ок полно, а h-ников и .lib к ним что-то я не видел. Как же их подрубают? Или чужие dll не подключают к проектам.
Так и есть, идут в комплекте. Т.е. юзеру дают только .dll, а разрабу - .lib и .h От виндовых dll-ок все lib-ы в студии лежат.
krabz Поискал, нету. Не подскажите, где можно достать h-ники и lib-ы для системных dll? Я как понял h-ники в include копировать, а lib-ы в lib. Это получается, что любую функцию экспортируемую системной dll-кой, которую видит OllyDbg, при наличии h-ников и lib можно вызывать напрямую? Или нет.
У меня вот здесь: c:\Program Files\Microsoft SDKs\Windows\v6.0A\Include\ c:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\ Не надо ничего копировать. Если собираете студией проект, то пути уже прописаны в переменных окружения и основные либы уже по дефолту включены в командную строку, другие надо просто добавить по именам, без путей. Совершенно верно, для того они и предназначены чтоб их дёргали.
как же ты живешь то без "lib для системных dll"? октрою тебе маленький секрет, только не говори никому... половина посиксных функций (например malloc и free) - прослойки над WinAPI, оставшаяся половина реализованы в CRT руками (например srand и rand)...
после такой фразы я бы закрыл тему, а получеловка Nafanya изолировл бы от васм.ру на недельку. на карантин. амбулаторно.
NeuronViking так вы почитайте для сравнения, что в ветке пишут Rel, GRRRLPower,krabz и другие, и что пишет _DEN_. Тем более у него неистовое желание все время меня подколоть, если раньше не обращал на это внимание, то сейчас просто уже достало. Выкладываю пример создания динамической и статической библиотеки под Windows (код был взят из "Философия С++"). Следует обратить внимание на ключевое слово __declspec(dllexport), применяющееся для экспортирования функций из dll. Для создания статической библиотеки оно не нужно.