у нас есть некоторый динамический плагин-dll, который генерируется с помощью отдельной защиты и используется при запуске программного обеспечения. Код плагина-dll - это использование некоторых заголовочных файлов из основного проекта. во время компиляции кода плагина, если основной файл заголовка проекта содержит некоторую функцию и определение вне класса, в то время я получаю ошибку, как неразрешенный внешний символ.
Эта ошибка ожидается из-за того, что код плагина не находит определение функции (основного проекта).
Примечание: плагин должен быть скомпилирован до компиляции основного проекта.
В двух случаях плагин кода компилируется.
1) Если основной заголовочный файл проекта имеет чисто виртуальную функцию, то это работа
отлично (подключаемый код отлично компилируется).
2) Если я напишу определение функции внутри класса.
Я пробовал встроенную функцию, но она не работала.
---------------------
*** Main Project ***
---------------------
->This project generate .exe file
mainProject.h
-------------
class MainProjectHeder{
virtual void foo() = 0; // this function is work
void foo1(); // this function giving me error like unresolved external symbol
void foo2{ // this work
print("hello");
};
};
void MainProjectHeder::foo1(){
print("function not working");
}
ExperimentFactoryInterface.h
----------------------------
#include <MainProjectHeder.h>
class ExperimentFactoryInterface {
public:
virtual ~ExperimentFactoryInterface() {}
virtual MainProjectHeder* CreateExperiment(const QVariant& = QVariant()) = 0;
};
----------------------
*** Pulgin code ***
----------------------
->This Project is generate DLL file
Experiment.h
-------------
#include <mainProject.h>
class Experiment : public MainProjectHeder{
virtual void foo();
};
void Experiment:foo(){
print("work fine");
}
Factory.h
----------
#include "cyclicvoltammetry.h"
#include <ExperimentFactoryInterface.h>
class Factory : public ExperimentFactoryInterface {
public:
MainProjectHeder* CreateExperiment(const QVariant& = QVariant());
};
MainProjectHeder* Factory::CreateExperiment(const QVariant&) {
return new Experiment;
}
при компиляции кода плагина; как я могу сообщить компилятору, как определение функции void foo1();
- это запись в проект или в другой проект?