Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Использование класса из DLL Добавлено: 23.04.11 14:24  

Автор вопроса:  Лёха | Web-сайт: supersait16.ucoz.ru
У меня в DLL,написанной на С++,есть классы,как их вызвать из DLL,чтоб можно было их использовать,например,в консольном приложении?

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #1 Добавлено: 23.04.11 17:33
Дык, как обычно
  1.  
  2. #include "mydll.h"  
  3. #pragma comment(lib, "mydll.lib")

Ответить

Номер ответа: 2
Автор ответа:
 Лёха



Вопросов: 20
Ответов: 79
 Web-сайт: supersait16.ucoz.ru
 Профиль | | #2
Добавлено: 24.04.11 10:26
Каддафи М,ты меня не понял,мне надо динамическая загрузка DLL

Ответить

Номер ответа: 3
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #3 Добавлено: 24.04.11 17:04
Тогда, походу, надо бы переделать dll в activeX, либо создавать объект класса в самой dll и возвращать указатель на объект в функции типа void* getinstance().


- Да как же тебя понять, если ты ничего не говоришь.
- Языками не владею, Ваше Благородие. (с)

Ответить

Номер ответа: 4
Автор ответа:
 Лёха



Вопросов: 20
Ответов: 79
 Web-сайт: supersait16.ucoz.ru
 Профиль | | #4
Добавлено: 25.04.11 19:07
ну допустим я сделаю так как ты говоришь,но в классе же есть методы,как мне их использовать,после того,как я прилинкую либу твоим способом?

Ответить

Номер ответа: 5
Автор ответа:
 Ким Чен Ир



Вопросов: 0
Ответов: 140
 Профиль | | #5 Добавлено: 25.04.11 20:54
Элементарно, впрочем я не уговариваю.

Вот DLL:
  1.  
  2. //mydll.h
  3. class  Cmydll {
  4. public:
  5. Cmydll(void);
  6. virtual  int MyMetod(); // virtual !!!
  7. };
  8. void* getInst(); // не забыть экспортировать!
  9.  
  10. //mydll.cpp
  11. #include "mydll.h"
  12.  
  13.  
  14. Cmydll::Cmydll()
  15. {
  16.  
  17. }
  18.  
  19. int Cmydll::MyMetod()
  20. {
  21. return 123;
  22. }
  23.  
  24. void* getInst()
  25. {
  26. return new Cmydll;
  27. }
  28.  
  29. // mydll.def
  30. LIBRARY MYDLL
  31.  
  32. EXPORTS
  33. getInst @1



А это ее динамическая загрузка и вызов метода в классе.
  1.  
  2. #include "D:\mydll\mydll.h"
  3.  
  4. typedef void * (__stdcall *pFactory)();
  5.  
  6. void TestProc()
  7. {
  8. HMODULE lib=LoadLibraryA("D:\\mydll\\Debug\\mydll.dll");
  9. pFactory myFunction =(pFactory) GetProcAddress(lib, "getInst");
  10. Cmydll * myclass =(Cmydll*) myFunction();
  11. int r = myclass->MyMetod();
  12. delete myclass;
  13. FreeLibrary(lib);
  14. }

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам