IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным. В описании темы указываем язык!!!

> Dll., Bulder 6.0
Fanat
сообщение 19.10.2007 18:39
Сообщение #1


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Хочу создать файл Dll. Делаю так File->New->Other->Dll wizard
Там забиваю:

#include <windows.h>
extern "C" __declspec(dllexport)
double AddNumbers(double a, double b)
{
return a + b;
}



Помимо этого там ещё есть функция аналог main. Как правильно сохранить? Я жму сохранить и сам подписываю после точки расширение .dll... После чего открыть этот файл заново не получаеться.
Нам ещё сказали на занятиях что автоматически должен создаться файл .lib? И зачем он мне ещё предлогает сохранить проект какойто который я не создавал?...


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 19.10.2007 18:58
Сообщение #2


Гость






Что я только что сделал:

Открыл Билдер, File -> New -> Other -> Dynamic Link Library...

В диалоговом окне отключил все примочки VCL и Multi-Threading-а, сделал язык не С++, а С.

Открывается редактор:

#include <windows.h>

// Тут много букв - это пока неважно ...

#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}
//---------------------------------------------------------------------------



Добавляю, собственно, твою функцию... Получаю такой файл:

#include <windows.h>

#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT
#endif


double DLL_EXPORT AddNumbers(double a, double b)
{
return a + b;
}

#pragma argsused
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
return 1;
}

Сохраняю этот проект, причем файл сохраняется с расширением *.С... Билдим проект - получаем DLL вместо EXE...

Сообщение отредактировано: volvo - 19.10.2007 18:59
 К началу страницы 
+ Ответить 
Fanat
сообщение 19.10.2007 19:19
Сообщение #3


Fanat
***

Группа: Пользователи
Сообщений: 261
Пол: Мужской
Реальное имя: Сергей

Репутация: -  5  +


Сделал так. Получил .dll.
Теперь в другом проекте.



#include <windows.h>
#include <stdio.h>
#define BUILD_DLL

//...

void __fastcall TForm1::Button1Click(TObject *Sender)
{
typedef int(*importFunction)(int, int);

importFunction addNumbers;
int result;

HINSTANCE hinstLib = LoadLibrary("Project2.dll");
addNumbers = (importFunction)GetProcAddress(hinstLib, "AddNumbers");

result = addNumbers(1, 2);
Edit1->Text=IntToStr(result);

FreeLibrary(hinstLib);
}



Что то не так. Файл Project2.dll лежит в тойже папке что и файлы этого проекта.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Fanat   Dll.   19.10.2007 18:39
volvo   Что я только что сделал: Открыл Билдер, File -...   19.10.2007 18:58
Fanat   Сделал так. Получил .dll. Теперь в другом проекте...   19.10.2007 19:19
volvo   DLL: #include <windows.h> double __declsp...   19.10.2007 20:02
Fanat   Спсибо разобрался... :)   19.10.2007 20:35
Fanat   А если необходимо создать .dll в котором описаны м...   21.10.2007 13:29
volvo   Ничего не надо ни изменять ни создавать заново. Од...   21.10.2007 14:40
Fanat   Пишу в файле который хочу чтобы был .dll с описани...   21.10.2007 14:59
volvo   Используя LoadLibrary ты замучаешься работать с кл...   21.10.2007 15:56
Fanat   Сделал как ты написал. Спасибо работает. Но являет...   21.10.2007 17:16
volvo   Вообще-то с LoadLibrary проблем быть не должно. У ...   21.10.2007 17:29
Fanat   работать не будет, потому как тело конструктора о...   21.10.2007 18:02
volvo   Вот тут есть довольно подробное объяснение процесс...   21.10.2007 18:50
Fanat   Вот тут есть довольно подробное объяснение процес...   21.10.2007 19:45
volvo   :blink: У меня третьим WinRar-ом свободно открылся...   21.10.2007 19:53
Fanat   :blink: У меня третьим WinRar-ом свободно открылс...   21.10.2007 20:03
volvo   А что там внутри у тебя не открывается? BPR - файл...   21.10.2007 20:22
Fanat   А что там внутри у тебя не открывается? BPR - фай...   21.10.2007 20:35
Fanat   Всё!!! :good: ...у меня получилось......   21.10.2007 22:20
volvo   FormTestDLL.H: typedef IMyCls * (__declspec(dlli...   21.10.2007 22:34
Fanat   FormTestDLL.H: typedef IMyCls * (__declspec(dlli...   21.10.2007 22:39
volvo   Если честно - я не понял, что тебя смущает вообще....   21.10.2007 22:55
Fanat   Если честно - я не понял, что тебя смущает вообще...   21.10.2007 22:59
volvo   Как это "не подключается?" А в DBTEST.B...   21.10.2007 23:27
Fanat   То есть таким образом он подключаеться. Буду знать...   21.10.2007 23:30
Fanat   Вот прочитал help на который ты давал ссылку... от...   22.10.2007 19:59
volvo   Сбрось свою DLL-ку в каталог \BIN в папке Bui...   22.10.2007 20:37
Fanat   Это через DOS в смысле? Он ругаеться на то что Pro...   22.10.2007 20:59
volvo   Это через Start -> Run -> CMD ... то, что д...   22.10.2007 21:07
Fanat   Это через Start -> Run -> CMD ... то, что ...   22.10.2007 21:11
volvo   Возьми в кавычки... То есть, CD "диск_на_кото...   22.10.2007 21:25
Fanat   Получил. Так теперь можно задать имя функции своё?...   22.10.2007 21:39
volvo   Никак... Тебе это не нужно. Все что тебе может пон...   22.10.2007 21:52
Fanat   Понянто...спасибо...   22.10.2007 21:54


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.07.2025 2:34
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"