Сейчас на форуме: asfa, Rio, _MBK_, Adler (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Как создать DLL и внедрить в программы?
Посл.ответ Сообщение

Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 08 мая 2013 15:51 · Поправил: test4me
· Личное сообщение · #1

Доброго времени суток! Есть программка на которую хочу подвесить DLL перед тем как эта программа запустится на выполнение, чтобы выполнила некоторый код из нее..и в зависимости от полученных данных продолжила или закрылась.. DLL можно положить в ту же папку...
Нашел очень хорошую статью с примером на --> http://legko.ucoz.ru/index/0-27 <-- но там только описание и рисунки которые прилагаются к примеру к сожалению не открываются..попробовал сделать вот что из этого получилось...
есть конкретные вопросы: (P.S уважаемый Archer разблокируйте пожалуста тему)

попробую описать ситуацию...сделал проект где должна получится DLL..
если кому интересно вот самый простой код для тестировки:
Code:
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #include <windows.h>
  5. #pragma hdrstop
  6. //---------------------------------------------------------------------------
  7. //   Important note about DLL memory management when your DLL uses the
  8. //   static version of the RunTime Library:
  9. //
  10. //   If your DLL exports any functions that pass String objects (or structs/
  11. //   classes containing nested Strings) as parameter or function results,
  12. //   you will need to add the library MEMMGR.LIB to both the DLL project and
  13. //   any other projects that use the DLL.  You will also need to use MEMMGR.LIB
  14. //   if any other projects which use the DLL will be performing new or delete
  15. //   operations on any non-TObject-derived classes which are exported from the
  16. //   DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
  17. //   EXE's to use the BORLNDMM.DLL as their memory manager. In these cases,
  18. //   the file BORLNDMM.DLL should be deployed along with your DLL.
  19. //
  20. //   To avoid using BORLNDMM.DLL, pass string information using "char *" or
  21. //   ShortString parameters.
  22. //
  23. //   If your DLL uses the dynamic version of the RTL, you do not need to
  24. //   explicitly add MEMMGR.LIB as this will be done implicitly for you
  25. //---------------------------------------------------------------------------
  26.  
  27. #pragma argsused
  28. int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
  29. {
  30.         ShowMessage("test");
  31.         return 1;
  32. }
  33. //---------------------------------------------------------------------------
  34. extern "C" void __export primer()
  35. {
  36.  Application->MessageBoxA("Test","From DLL",IDOK);
  37. }


запустив ее на компьютере где был билдер работает все нормально, но на другом компьютере выдала ошибку где сообщалось о том что не может найти библиотеку vcl60.bpl...естественно я ее повторно скомпилировал где в опциях снял галочки Link with Dynamic RTL и Build with runtime packages. но при компиляции появились другие ошибки..поискал vcl60.bpl и нашел его в системной папке C:\Windows\SysWOW64..ошибки такие:
[Linker Error] Unresolved external '__fastcall Dialogs::ShowMessage(const System::AnsiString)' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\PROJECTS\PRIMER.OBJ
[Linker Error] Unresolved external 'Forms::Application' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\PROJECTS\PRIMER.OBJ
[Linker Error] Unresolved external '__fastcall Forms::TApplication::MessageBox(const char *, const char *, int)' referenced from C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|_t_Forms

в чем ошибка? немогу понять...буду рад любому ответу...нужно срочно
с уважением test4me




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 08 мая 2013 15:57 · Поправил: Модератор
· Личное сообщение · #2

Гугл поможет. Хоть немного погугли. И приходи с конкретным вопросом.
Поскольку первый пост поменялся, открыл топик обратно.



Ранг: 2.2 (гость)
Активность: 0=0
Статус: Участник

Создано: 11 мая 2013 13:26
· Личное сообщение · #3

ураа решение найдено.....присоединил библиотеки..
#pragma link "C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\lib\vcl.lib"
#pragma link "C:\PROGRAM FILES (X86)\BORLAND\CBUILDER6\lib\rtl.lib"
все проблема решена...тема закрыта
особая благодарность за терпение Archer




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 11 мая 2013 14:00
· Личное сообщение · #4

Тогда, видимо, можно закрыть обратно.


 eXeL@B —› Вопросы новичков —› Как создать DLL и внедрить в программы?
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати