可不可以把一个DLL做成类,然后调用DLL中的函数[问题]

flying720 2006-08-18 02:16:46
我现在有一个动态库hybird.dll,我要动态调用它里面的函数,除了静态和动态调用外,能不能把它做成一个类,放在一个头文件中如:hybird_dll.h中,具体文件实现如下:

#include "stdafx.h"

class HyBird
{
//hybird.dll函数声明
public:
HINSTANCE lib;
typedef bool (WINAPI* SETCOM)(int x, int y, int z);
typedef bool (WINAPI* OPENCOMMPORT)(void);
//// 函数事例化
SETCOM setCom;
OPENCOMMPORT openCommPort;

///调用dll
lib=LoadLibrary("hybird.dll");
if (lib==NULL)
 {
 AfxMessageBox("hybird.dll调用失败");
 return ;
 }
setCom=(SETCOM)GetProcAddress(lib,"setCom");
openCommPort=(OPENCOMMPORT)GetProcAddress(lib,"openCommPort");

};

但是在别处用的时候,老是提示错误:
error C2258: illegal pure syntax, must be '= 0'
error C2501: 'lib' : missing storage-class or type specifiers
error C2501: 'setCom' : missing storage-class or type specifiers

请知道的朋友指点迷津,多谢了
...全文
183 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenming123 2006-08-23
  • 打赏
  • 举报
回复
class __declspec(dllexport) CMyClass
{
void Init();
}
只要这样定义就行了
调用的时候不需特别的处理
CMyClass g_MyClass;
g_MyClass.Init();
xiaoshi0 2006-08-23
  • 打赏
  • 举报
回复
已经给你发了短消息了,代码在上面,自己整理一下
yayafu 2006-08-22
  • 打赏
  • 举报
回复
dll就是dll,dll可以包含做成类,但不能做成类
longge520 2006-08-22
  • 打赏
  • 举报
回复
up
flying720 2006-08-22
  • 打赏
  • 举报
回复
xiaoshi0(小鱼儿) 能不能把你的小例子发给我看看,我的信箱是flying903@yahoo.com.cn,多谢了
xiaoshi0 2006-08-21
  • 打赏
  • 举报
回复
可以用动态的方式进行封装,我已经做了一个小例子

如果你出错,只能说明是你代码写错了
flying720 2006-08-21
  • 打赏
  • 举报
回复
多谢几位,我再试试看
shenming123 2006-08-21
  • 打赏
  • 举报
回复
dll是可以导出类的
class __declspec(dllexport) CMyWnd : public CWnd
就行了
MinToMin 2006-08-18
  • 打赏
  • 举报
回复
dll中这样定义:

dll.h:
#define DefDll _declspec(dllexport)

DefDll class HyBird
{
public:
void pro1();
....
private:
....
}

dll.cpp:
实现类代码,不用加DefDll
void myclass::pro1(void)
{
....
}

调用:
#define TestDll _declspec(dllimport)
TestDll class HyBird

myclass test1;
test1.pro1();
jerry 2006-08-18
  • 打赏
  • 举报
回复
一个更好的办法是DLL里导出函数。函数创建对象实例并返回一个虚拟接口。

EXE里通过虚拟接口来访问DLL的类功能
jerry 2006-08-18
  • 打赏
  • 举报
回复
DLL可以导出类,但不能这样得到地址。


一般要用静态方法来连接到DLL

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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