游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1651|回复: 5

关于类封装在动态联接库的问题

[复制链接]

2

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2006-3-1 20:38:00 | 显示全部楼层 |阅读模式
    我现有的知识是通过以下的方法进行封装。

         #include "classH.h"
         BOOL WINAPI DLLMain(HINSTANCE hInst,DWORD dwReason,LPVOID lpReserved)
         {
                          return 0;
         }
         IDXClass* iGetIDX()
         {
                         static CDXUT newIDXClass;
                 return &newIDXClass;
         }

    通过以下方法进行调用。
         typedef IDXClass* (iGetIDX)();
         HMODULE HmyDX;
         HmyDX=LoadLibrary("CDX_DLL.dll");
         iGetIDX* lp=(iGetIDX*)GetProcAddress(HmyDX,"iGetIDX");       
         myDX=(*lp)();

    但是我发现有个问题,这样的类只有一个对象实体(可能是因为static造成的,但是不用静态修饰就会在过程执行后消失)。我用多个模块句柄调用也是同一个内存地址。
   
    当我需要多个类的对象的时候就无法实现了(比如多个模型,多个灯光)。各位高手能不能告诉我一个可以多对象的封装办法和调用方法。不胜感激。
   
    如果各位大侠实在太忙,给我伪代码,或者代码让我自己参透也行。


[em4] [em4] [em4] [em4]

7

主题

61

帖子

61

积分

注册会员

Rank: 2

积分
61
发表于 2006-3-2 09:40:00 | 显示全部楼层

Re:关于类封装在动态联接库的问题

试试:
static IDXClass* iGetIDX()
{
         CDXUT *newIDXClass=new CDXUT()
       return newIDXClass;
}

2

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2006-3-2 09:53:00 | 显示全部楼层

Re:关于类封装在动态联接库的问题

我操。太他妈的帅了。你绝对就是传说中的神。 我怎么没想到用静态方法呢,你能当我的偶像吗? 我现在就去try一下。

2

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2006-3-2 09:58:00 | 显示全部楼层

Re:关于类封装在动态联接库的问题

好像static的方法,就无法导出符号了。

2

主题

12

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 2006-3-2 10:07:00 | 显示全部楼层

Re:关于类封装在动态联接库的问题

好像static的方法,就无法导出符号了。

14

主题

131

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2006-3-3 12:09:00 | 显示全部楼层

Re:关于类封装在动态联接库的问题

用类指针的方式可以解决运行后消失的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-23 19:55

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表