Можно ли импортировать класс из DLL при explicit linking ?
От: Gregory Россия ICQ 300403361
Дата: 03.02.04 15:30
Оценка:
Здравствуйте, господа.
Вопрос вынесен в тему, а ситуация такая. Есть некий класс, который основной прогой используется достаточно редко (скажем конвертирует файл из одного формата в другой), или является компонентом, который может устанавливаться опционально. Естественно приходит мысль поместить его код в DLL и грузить при необходимости. Так вот можно ли и как импортировать этот класс из DLL при явном связывании?
Я написал следующий код:

class CMyClass
{
public:
  CMyClass();
  ~CMyClass();
  void Foo1();
  void Foo2();
  void Foo3();
};


в MyClass.def написал:
LIBRARY      "MyDLL"

EXPORTS
CMYCLASS = ??0CMyClass@@EAEXXZ


И в коде основной проги:

  typedef CMyClass (*PCMYCLASS)();
  HINSTANCE hMyDLL = AfxLoadLibrary("MyDLL");              
  PCMYCLASS pCMyClass = (PCMYCLASS)GetProcAddress(hMyDLL, "CMYCLASS");
  CMyClass MyClass = PCMYCLASS();


При компиляции получил сообщение типа cannot convert from CMyClass to CMyClass.
Если же просто написать PCMYCLASS(); то линкер говорит что Foo1 Foo2 Foo3 unresolved external symbol.
Не дай своим глазам увидеть, а ушам услышать то, что ты не сможешь объяснить.
Абрахам ван Хелсинг
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.