|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
Использование DLL31.03.2013, 21:09. Показов 1191. Ответов 10
Метки нет (Все метки)
Ребят, привет!
Решил побаловаться и научиться создавать библиотеки DLL/LIB. С либом - все в порядке получилось - либу собрал, в другом проекте её заюзал. Проблема с длл. Что сделал: 1. Собрал DLL - засунул её в C:\Windows\system32 (чтобы переменную окружения не клепать новую) 2. Подключил Хедер в проект, использующий DLL. И вот беда: компилиться - компилится. А вот сборка не проходит: main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: void __thiscall mydll::Foo: rint(void)" (?print@Foo@mydll@@QAEXXZ) в функции _mainПодскажите, где втупляю?) Thanks in advance Блин, я, впрочем, понимаю, где втупляю, для сборки моего проекта, использующего DLL, нужно определение, но проект его не видит, как решить проблему правильно? Хм, вообщет это библиотека динамической компоновки - какого хрена оно должно у меня компоноваться сейчас. Запутался. Добавлено через 12 минут Понял) Библиотеки импорта не подключил (lib). Щас проверю как отразится замена dll на результе работы приложения. А пока вопрос таков: есть ли где-нибудь поистине современный источник (было бы здорово, если подробный), в котором здорово рассказывается о современных подходах работы с DLL (обо всех аспектах, чтобы урывками не читать отовсюду). Я имею в виду, например, что COM - не очень щас моден, вроде. Тем не менее - распределенность самого приложения и масштабирование/модификация без пересборки - идея классная. Буду благодарен
0
|
|
| 31.03.2013, 21:09 | |
|
Ответы с готовыми решениями:
10
Использование .DLL Использование DLL C++ в C# |
|
Модератор
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,871
|
|
| 01.04.2013, 01:11 | |
|
при создании длл
используй перед функциями extern "C" почитай http://www.xserver.ru/computer/sredaprogr/msvc/2/
1
|
|
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
| 01.04.2013, 10:16 [ТС] | |
|
Спасибо, старина, вчера, кстати, с библиотекой импорта попробовал - сборка - норм. Но запуск не удается. Грит, на компе нет dll нужной, хотя засунул её в system32, которая в PATH по дефолту указана. В недоумении.
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 01.04.2013, 10:25 | ||
|
Загрузка DLL может "обломиться" не только потому, что загрузчик не нашел саму эту DLL, но и из-за того, что не найдена какая-либо другая либа, от которой твоя DLL зависит (т.е. если твоя DLL подгружает - возможно, неявно! - какую-то еще DLL.... а та может подгружать еще... и так далее). Короче, загрузка будет выполнена успешно в том и только в том случае, если будет успешно загружен не только модуль "твоей" DLL, но и все модули, от которых он зависит (а для них - действует то же самое правило).
1
|
||
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
| 01.04.2013, 12:09 [ТС] | |
|
Да, это справедливое замечание. Но у меня тестовая DLL - класс с единственной функой print))) Утилиту эту посмотрю сегодня вечером дома, спасибо
0
|
|
|
|
||
| 01.04.2013, 13:03 | ||
|
0
|
||
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
| 01.04.2013, 14:04 [ТС] | |
|
-=ЮрА=-, вот все, что написано, мне ясно вполне. Попробую описать свои ощущения. До сих пор я использовал C++ (куча книг + практика): код - транслятор - компоновщик - единый исполняемый модуль на выходе.
Теперь я хочу научиться созданию таких вещей, как распределенные программы с взаимозаменяемыми компонентами и т.д. При этом, задумываюсь о том, что, скажем, моё приложение (пусть использующее OpenGL-библиотеки), должно работать и на других компах. Познавая графику я у себя запускал все без проблем - на других компах - ругань, которую описал выше. Добавлю, что, как я понял, вариаций на тему - множество (COM, в частности, от которого, вроде, современные разработчики нос воротят). Я знаю, что знаю C++. Потому что я изучал его последовательно. Теперь хочу освоить эту технологию. Отсюда вытекает мой главный вопрос. Какой источник мог бы пролить свет на все вопросы, связанные с этим искусством? Потому попытки урывками что-то слепить, беря чуток оттуда/да отсюда - мне не дадут четкого понимания вопроса. Скачал вчера Хоара, чота там по MVC++, в расчете на то, что там будет все подробно на эту тему - еще на смотрел. Порекомендуй какие-нибудь ресурсы - по-настоящему хорошие? Сори за ошибки орфографические - на работе не оч. удобно писать - спешил. Добавлено через 15 минут Не Хоара, а Хортона)))
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|
| 01.04.2013, 14:37 | |
|
ITcrusader, а классику - Джеффри Рихтер, Windows для профессионалов - ты уже читал? Если нет - гугл в помощь.
1
|
|
|
|
||
| 01.04.2013, 14:40 | ||
|
Не по теме: ITcrusader, под MVC подразумевалось Model-view-controller?
0
|
||
|
179 / 165 / 21
Регистрация: 12.02.2013
Сообщений: 410
|
|
| 01.04.2013, 15:02 [ТС] | |
|
-=ЮрА=-, под MVC подразумевал Microsoft Visual Studio, т.е. книга та об использовании студии вообще.
CheshireCat, спасиб, гляну. У меня на работе используется COM, например. Мне думается, что он несколько избыточен) Ок, я теперь покопаюсь немного сам в этих источниках, думаю, вопросы еще появятся. Спасиб
0
|
|
|
|
|
| 01.04.2013, 15:57 | |
|
1
|
|
| 01.04.2013, 15:57 | |
|
Помогаю со студенческими работами здесь
11
Использование сторонней dll Использование dll в приложении Использование dll созданных в .net в c++
Использование dll Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2.
Номеклатура. . .
|