0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
1 | |
Совмещение с DLL26.07.2013, 09:53. Показов 971. Ответов 13
Метки нет Все метки)
(
Здравствуйте!
Такая задача. У меня есть программка, которая проводит некоторые вычисления. Теперь, отдельно от этой программы мне нужно создать точно такую же, но в DLL. При этом открываться на выполнение должна первая, но вычисления должны проводиться во второй. То есть я ввожу значения, по которым проводятся вычисления, в программу, которую написала как обычно через проект в с++, затем эти данные каким-то образом должны передаться в DLL, там должны пройти вычисления, и в конце, уже готовый результат должен снова вернуться в первую программку, и та, в свою очередь, вывести результаты на экран. (Возможно, мне нужно просто написать программку в DLL, используя интерфейс первой программки (форму), но задача была поставлена именно так, как я описала выше). Еще не приходилось ни разу сталкиваться с DLL, возможно кто-то понял, что мне нужно сделать и поможет советами, хотя бы с чего начать и как это можно реализовать. Спасибо.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
26.07.2013, 09:53 | |
Ответы с готовыми решениями:
13
Кто может поделиться файлами ogg.dll, vorbis.dll и vorbisfile.dll - 32-х и 64-битными версиями? Затупил, скажите где взять libmysqld.dll, libmysqld50.dll, libmysqld51.dll Сборка Qt: отучение Qt от mingw10.dll, libgcc_s_dw2-1.dll и других Qt***.dll |
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
|
||||||||||||||||
26.07.2013, 10:53 | 2 | |||||||||||||||
Вам из своей программки просто нужно будет вызывать функции из длл (все как и раньше: передаете функции параметры, получаете от нее результат). Для этого к своему приложению прикрепите библиотеку длл (файл lib, создастся при компиляции длл) и подключите h-файл длл (#include mydll.h). Вот, для примера, простой файл Unit2.cpp для создания длл__
1
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
26.07.2013, 11:12 [ТС] | 3 |
nick42, спасибо большое! Буду разбираться, пробовать.
Вопрос: 1 кусочек кода создан через dll, а 3-ий - это уже запись в отдельном проекте, с формой и т.п., правильно? Т.е. я могу просто свою программку переделать, написав вместо вычислений обращения к функциям из dll (при этом, изначально, создав файл dll с хэдером), где записаны непосредственно сами формулы, да?
0
|
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
|
|
26.07.2013, 11:41 | 4 |
Да. Первым делом советую создать проект для длл и получить при его компиляции саму длл с либ - и 0 ошибок.
![]()
1
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
26.07.2013, 11:43 [ТС] | 5 |
nick42, еще раз спасибо!!
![]()
0
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
29.07.2013, 13:23 [ТС] | 6 |
nick42, а Вы не подскажете, каким образом мне ввод в эдиты инициализировать?
И записать это нужно же в основную программу, а затем как-то вызывать в длл?
0
|
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
|
|
29.07.2013, 13:50 | 7 |
.. не советую. Возможно и при вызове длл форму строить, но вы же можете значения на эдиты в основной форме получить, а результат обработки пусть длл возвращает (так ведь было задумано?).
0
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
29.07.2013, 14:04 [ТС] | 8 |
nick42, да, именно так. Не совсем понимаю только, как это сделать. Не напишите поподробней?
А на счет формы - так у меня только одна форма - основная, в основном проекте. А должны быть еще? ![]() ![]()
0
|
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
|
|
29.07.2013, 14:55 | 9 |
Возможно я не правильно вас понял, поэтому лучше на примере.
В архиве два проекта: создание длл и простая форма с двумя эдитами и кнопкой. При нажатии на кнопку в длл посылается запрос с двумя параметрами (числа с плавающей точкой, считанные с эдитов). В ответ на этот запрос длл посылает рассчитанную сумму, которая будет помещена в лэйбл. Там все очень просто; если разберетесь, то легко сможете переместить свои функции из программы в длл, а ввод нужных данных организовать через эдиты.
1
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
29.07.2013, 14:59 [ТС] | 10 |
nick42, о, спасибо огромное!
Надеюсь, разберусь ![]()
0
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|||||||||||||||||||||
08.08.2013, 13:21 [ТС] | 11 | ||||||||||||||||||||
nick42, добрый день)
Уже несколько дней не могу понять, в чем мои ошибки, по нескольку раз переписывала все. Так вот, Вы не подскажете, что не так, только не ругайтесь сильно, если совсем худо дело... ![]() P.S: dll-ку подключила к основному проекту. Правда, статически, а динамическим связыванием, потому как со статикой тоже проблемы возникли -_- Вот одна из функций (самая коротенькая ![]() В dll:
0
|
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
|
|
08.08.2013, 14:22 | 12 |
Во вложении (архив 44) - два проекта (по Вашему коду); у длл всего одна функция (самая коротенькая). Программа что-то там выдает в лэйбл, - я надеюсь: то, что ей задали. Изменений я сделал пару, ну, может, три - не помню уже. Так что в основном у Вас все верно. Найдите эти "три отличия" и попробуйте в таком же тоне описать остальные функции (конечно, если с этой "коротенькой" все получилось...).
1
|
0 / 0 / 0
Регистрация: 03.07.2012
Сообщений: 56
|
|
08.08.2013, 14:30 [ТС] | 13 |
nick42, спасибо еще раз! Буду разбираться
![]()
0
|
Практикантроп
4741 / 2647 / 512
Регистрация: 23.09.2011
Сообщений: 5,678
|
|
08.08.2013, 14:39 | 14 |
Возможно, будут проблемы с файлом testdll.bpr. Тогда подмените его этим (во вложении), я его "подчистил".
0
|
08.08.2013, 14:39 | |
Помогаю со студенческими работами здесь
14
Совмещение ПР Совмещение шейдеров Совмещение локалок Совмещение языков Совмещение графиков Совмещение bitmap Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |