У меня есть (большая и сложная) программа на C ++ со своими собственными классами и методами. (Очевидно)
Я хотел бы загрузить во время выполнения DLL.Из основной программы я хочу вызвать функцию внутри dll, передающую экземпляр класса, и эта функция будет использовать метод этого класса.
В псевдокоде
Основная программа:
class MyClass{
myattr1();
myattr2();
mymethod1();
mymethod2();
}
void main(){
MyClass* object = &(new MyClass())
handle_of_the_dll = *some function that load the dll*
dllfunc = getfunc(handle_of_the_dll, "interesting_function")
dllfunc(object)
[...etc...]
и dll
#ifdef __cplusplus
extern C {
#endif
#ifdef BUILD_DLL
#define EXPORT __declspec(dllexport)
#else
#define EXPORT __declspec(dllimport)
#endif
#include all the needed headers from main program, where the class is defined
EXPORT void interesting_functionn(MyClass object){
object.mymethod1();
}
#ifdef __cplusplus
}
#endif
Это допустимо / выполнимо / правильно?
РЕДАКТИРОВАТЬ:
я знаю, что это будет плохой дизайн дляобычная программа, но этот метод предназначен для того, чтобы дать пользователям возможность использовать свои собственные dll, которые могут получить доступ к API основной программы.Что-то вроде модулей Cpython