我正在使用DLL,我是新手。 我正在尝试加载从我的接口继承的派生类
class IModule{
public:
virtual ~IModule(); // <= important!
vector<String> getFunctions();
protected:
vector<String> mFunctions;
};
class DllModule : public IModule {
public:
DllModule() {
this->mFunctions.push_back("Algorythm");
};
private:
int test;
};
这里我想发送指向我的应用程序的指针
extern "C" {
IModule* CreateModule() {
// call the constructor of the actual implementation
IModule * module = new DllModule;
// return the created function
return module;
}
}
我加载后的应用程序
f_GetFunctions funci = (f_GetFunctions)GetProcAddress(hGetProcIDDLL, "CreateModule");
if (!funci) {
std::cout << "Could not locate function CreateModule" << std::endl;
//return EXIT_FAILURE;
return nullptr;
}
IModule* module = funci();
我希望mFunction已填充,但它像新的IModule实例而不是从DLL加载的DllModule。我想要的只是在mFunctions循环并在QT_App中填充我的组合框。
有人能帮助我吗?我的期望有什么不对?
非常感谢。
(一切都在Windows10中完成)
编辑1:将类型更改为最小(对不起) 功能=&gt;串
编辑2:我完全忘记了分配指针
答案 0 :(得分:0)
我能够绕过我的问题。 我使用了QLibrary.Load()而不是LoadLibraryA,它完全符合我的要求。