loadlibrary显式调用导出类,类对象的函数怎么调用

hufeikong 2011-10-19 01:39:57
目前只有dll,无lib

有导出类



class __declspec(dllexport) A
{
int a;
int Fun1();
};



这个类的头文件有。

如何通过loadlibrary显示使用这个类呢:


看资料有增加一个导出函数


extern "C" __declspec(dllexport) A * CreateObject()
{
return new A;
}


通过这个导出函数,创建一个类对象,并返回对象指针。

但是,怎么调用这个对象的方法呢?

下面是错误的:

typedef A* (*pCreateObjectFun)();

hDll = LoadLibrary(dllPath.GetBuffer());
pCreateObjectFun pFun = (pCreateObjectFun)GetProcAddress(hDll, "CreateObject");

A * pObj = pFun();//pObj是个对象,这没问题

//下面这里就有问题了
pObj->Fun1();


这问题是当然的,因为不知道Fun1的地址。

请问怎么才能正确显式使用导出类
...全文
886 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hufeikong 2011-10-19
  • 打赏
  • 举报
回复
这样显示使用dll,很精彩的,跟做插件一样,主体工程不动

做好后,把dll放入就是一个多出来的功能
hufeikong 2011-10-19
  • 打赏
  • 举报
回复
http://www.codeguru.com/Cpp/W-P/dll/importexportissues/article.php/c123


好的,谢谢,楼上,我早网上也搜到文章了,和你说的一样,就是用虚函数
  • 打赏
  • 举报
回复
写一个基类,方法都为虚函数,这样使用dll的exe使用都没问题。

dll的类从基类 派生,然后返回基类接口即可。
hufeikong 2011-10-19
  • 打赏
  • 举报
回复
编译是有lib,但是不想用它,就是不想重新在工程中配置lib,重新编译。

我的目的是做好dll,丢在工程的目录下就直接用了。

这样的dll是动态的。

不能每次开发一个dll,都去重新编译工程。

  • 打赏
  • 举报
回复
自己写一个dll,然后导出A类。

链接的时候链接你自己编译的lib,dll用已有的。

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧