У меня есть проект, в котором я хочу использовать DLL.
Я экспортирую фабричную функцию в свой exe:
extern "C" __declspec(dllexport)
BaseInit* __cdecl CreateInterface( void )
{
return new Initializer;
}
Это прекрасно работает.В моем классе Init у меня есть метод для создания другого класса, который я хочу удобно использовать из моего класса Initializer:
class IAnotherClass {
public:
virtual void TestFunction();
...
class AnotherClass : public IAnotherClass {
public:
void TestFunction();
...
class Initializer : public BaseInit
{
IAnotherClass* Create(void)
{
return new AnotherClass;
}
...
Это также, кажется, работает.Я получаю ненулевой указатель.Однако при попытке вызвать TestFunction из этого класса (в моей exe-программе) я получаю:
LNK2001 неразрешенный внешний символ "public: virtual void __cdecl AnotherClass :: TestFunction (void)" (?TestFunction @ AnotherClass @@ UEAAXXZ)
void AnotherClass::TestFunction
- тело находится в отдельном .cpp-файле в моем проекте DLL
Я делаю это неправильно, и мне действительно нужны отдельные функции фабрикидля каждого отдельного экземпляра класса?Можно ли вообще так сделать?