Страница: 1 |
Вопрос: Использование класса из DLL
Добавлено: 23.04.11 14:24
Автор вопроса: Лёха | Web-сайт: supersait16.ucoz.ru
У меня в DLL,написанной на С++,есть классы,как их вызвать из DLL,чтоб можно было их использовать,например,в консольном приложении?
Ответить
Номер ответа: 1Автор ответа: Ким Чен Ир
Вопросов: 0Ответов: 140
Профиль | | #1
Добавлено: 23.04.11 17:33
Дык, как обычно
#include "mydll.h"
#pragma comment(lib, "mydll.lib" )
Ответить
Номер ответа: 3Автор ответа: Ким Чен Ир
Вопросов: 0Ответов: 140
Профиль | | #3
Добавлено: 24.04.11 17:04
Тогда, походу, надо бы переделать dll в activeX, либо создавать объект класса в самой dll и возвращать указатель на объект в функции типа void* getinstance().
- Да как же тебя понять, если ты ничего не говоришь.
- Языками не владею, Ваше Благородие. (с)
Ответить
Номер ответа: 5Автор ответа: Ким Чен Ир
Вопросов: 0Ответов: 140
Профиль | | #5
Добавлено: 25.04.11 20:54
Элементарно, впрочем я не уговариваю.
Вот DLL:
//mydll.h
class Cmydll {
public :
Cmydll(void );
virtual int MyMetod(); // virtual !!!
};
void * getInst(); // не забыть экспортировать!
//mydll.cpp
#include "mydll.h"
Cmydll::Cmydll()
{
}
int Cmydll::MyMetod()
{
return 123;
}
void * getInst()
{
return new Cmydll;
}
// mydll.def
LIBRARY MYDLL
EXPORTS
getInst @1
А это ее динамическая загрузка и вызов метода в классе.
#include "D:\mydll\mydll.h"
typedef void * (__stdcall *pFactory)();
void TestProc()
{
HMODULE lib=LoadLibraryA("D:\\mydll\\Debug\\mydll.dll" );
pFactory myFunction =(pFactory) GetProcAddress(lib, "getInst" );
Cmydll * myclass =(Cmydll*) myFunction();
int r = myclass->MyMetod();
delete myclass;
FreeLibrary(lib);
}
Ответить
Страница: 1 |
Поиск по форуму