Проблема с Dll
Излагаю суть:
создаю я DLL, Билдер сам создал Unit1.cpp и Unit1.h;
ещё я самостоятельно создал новый юнит (Unit2.cpp и Unit2.h)
В Unit2.h я написал:
#ifndef DllFunctionsH
#define DllFunctionsH
//---------------------------------------------------------------------------
extern "C" void __declspec(dllexport) Say(char *WhatToSay);
//---------------------------------------------------------------------------
#endif
В Unit2.cpp я написал:
extern "C" void __declspec(dllexport) Say(char *WhatToSay){ShowMessage(AnsiString(WhatToSay));}
Открываю "имя проекта".bpf, пишу там:
useunit("Unit2.cpp");
This file is used by the project manager only and should be treated like the project file
DllEntryPoint
Сохранюю изменения, нажимаю Project->Build, всё проходит нормально, DLL'ка и соответствующий .LIB
создались нормально.
Но чтобы мою DLL можно было использовать на другом компе, где нет билдера, я знаю
надо убрать галку напротив Project->Options->Packages->Build With Runtime Packages, что я и сделал.
Сохрняю, даю команду "билд!", но выдаётся ошибка:
[Linker Error] Unresolved external '__fastcall Dialogs::ShowMessage(const System::AnsiString)'
referenced from C:\DOCUMENTS AND SETTINGS\USER\Рабочий стол\DLL\SIMDLL\UNIT2.OBJ
Если убрать галки напротив Project->Options->Linker->Use Dinamic RTL, то ошибка всё-равно остаётся.
Пожалуйста помогите советом, что сделать, чтобы всё было как надо.
Заранее балгодарою за помощь...
Цитата:
Originally posted by protz
У меня возникла большая проблема с Билдером 6.
Излагаю суть:
создаю я DLL, Билдер сам создал Unit1.cpp и Unit1.h;
ещё я самостоятельно создал новый юнит (Unit2.cpp и Unit2.h)
В Unit2.h я написал:
#ifndef DllFunctionsH
#define DllFunctionsH
//---------------------------------------------------------------------------
extern "C" void __declspec(dllexport) Say(char *WhatToSay);
//---------------------------------------------------------------------------
#endif
В Unit2.cpp я написал:
extern "C" void __declspec(dllexport) Say(char *WhatToSay){ShowMessage(AnsiString(WhatToSay));}
Открываю "имя проекта".bpf, пишу там:
useunit("Unit2.cpp");
This file is used by the project manager only and should be treated like the project file
DllEntryPoint
Сохранюю изменения, нажимаю Project->Build, всё проходит нормально, DLL'ка и соответствующий .LIB
создались нормально.
Но чтобы мою DLL можно было использовать на другом компе, где нет билдера, я знаю
надо убрать галку напротив Project->Options->Packages->Build With Runtime Packages, что я и сделал.
Сохрняю, даю команду "билд!", но выдаётся ошибка:
[Linker Error] Unresolved external '__fastcall Dialogs::ShowMessage(const System::AnsiString)'
referenced from C:\DOCUMENTS AND SETTINGS\USER\Рабочий стол\DLL\SIMDLL\UNIT2.OBJ
Если убрать галки напротив Project->Options->Linker->Use Dinamic RTL, то ошибка всё-равно остаётся.
Пожалуйста помогите советом, что сделать, чтобы всё было как надо.
Заранее балгодарою за помощь...
У меня возникла большая проблема с Билдером 6.
Излагаю суть:
создаю я DLL, Билдер сам создал Unit1.cpp и Unit1.h;
ещё я самостоятельно создал новый юнит (Unit2.cpp и Unit2.h)
В Unit2.h я написал:
#ifndef DllFunctionsH
#define DllFunctionsH
//---------------------------------------------------------------------------
extern "C" void __declspec(dllexport) Say(char *WhatToSay);
//---------------------------------------------------------------------------
#endif
В Unit2.cpp я написал:
extern "C" void __declspec(dllexport) Say(char *WhatToSay){ShowMessage(AnsiString(WhatToSay));}
Открываю "имя проекта".bpf, пишу там:
useunit("Unit2.cpp");
This file is used by the project manager only and should be treated like the project file
DllEntryPoint
Сохранюю изменения, нажимаю Project->Build, всё проходит нормально, DLL'ка и соответствующий .LIB
создались нормально.
Но чтобы мою DLL можно было использовать на другом компе, где нет билдера, я знаю
надо убрать галку напротив Project->Options->Packages->Build With Runtime Packages, что я и сделал.
Сохрняю, даю команду "билд!", но выдаётся ошибка:
[Linker Error] Unresolved external '__fastcall Dialogs::ShowMessage(const System::AnsiString)'
referenced from C:\DOCUMENTS AND SETTINGS\USER\Рабочий стол\DLL\SIMDLL\UNIT2.OBJ
Если убрать галки напротив Project->Options->Linker->Use Dinamic RTL, то ошибка всё-равно остаётся.
Пожалуйста помогите советом, что сделать, чтобы всё было как надо.
Заранее балгодарою за помощь...
Скорей всего ты при создании длл не включил галочку - "Использовать VCL". Включи ручками vcl.h и будет тебе счастье.
Вобще-то в мастере я впервый раз слышу чтобы борлад создавал юнитовский файл для делки. Чего то ты скорее всего напутал.