Здравствуйте, господа.
Вопрос вынесен в тему, а ситуация такая. Есть некий класс, который основной прогой используется достаточно редко (скажем конвертирует файл из одного формата в другой), или является компонентом, который может устанавливаться опционально. Естественно приходит мысль поместить его код в 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.
Не дай своим глазам увидеть, а ушам услышать то, что ты не сможешь объяснить.
Абрахам ван Хелсинг