游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2895|回复: 4

请教一下关于DLL 使用的问题

[复制链接]

25

主题

82

帖子

82

积分

注册会员

Rank: 2

积分
82
发表于 2007-9-26 16:19:00 | 显示全部楼层 |阅读模式
我在生成DLL的时候,把一个CLASS写进去了
然后我在调用这个DLL的时候,怎么去初始化这个CLASS呢 以及怎么去调那个CLASS里面的函数啊。
以前写DLL ,里面全是函数,没有涉及到CLASS,所以不知道怎么弄了。
请教一下谢谢哈~~

25

主题

82

帖子

82

积分

注册会员

Rank: 2

积分
82
 楼主| 发表于 2007-9-27 09:27:00 | 显示全部楼层

Re:请教一下关于DLL 使用的问题

1)请问下是不是 CLASS里面的变量和函数都不用去变它吗?
然后直接在类名前面加 __declspec(dllexport)?

2)在调用的时候 我是用的HINSTANCE hInst= loadlibrary("DLL名");
然后我应该怎么创建类和调用函数啊?
class __declspec(dllimport) A 这个是在控制台声明的吗?
怎么载这个类 然后声明这个类的对象 和调函数啊


38

主题

275

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2007-9-29 23:38:00 | 显示全部楼层

Re:请教一下关于DLL 使用的问题

/*
        myDll.h
*/
#ifndef        MYDLL_H
#define        MYDLL_H

#ifndef        DLLEXPORT
#define        DLLEXPORT        _declspec(dllexport)
#endif

#include        <windows.h>
#include        <stdio.h>

class        DLLEXPORT        MsgBox
{
public:
        MsgBox() : m_iData( 0 )        {        }
        ~MsgBox()        {        }

        void        showMsg( const char *msg, int data );

protected:
        int                m_iData;
};

#endif

/*
    myDll.cpp
*/
#include        "myDll.h"

void        MsgBox::showMsg( const char *msg, int data )
{
        char info[256] = {0};

        sprintf( info, "%s %d", msg, data );
        MessageBox( NULL, info, "ok", MB_OK );
}

/*
    another project , test.cpp
*/
#include "myDll.h"

#ifdef        _DEBUG
#pragma        comment( lib, "../lib/dll_d.lib" )
#else
#pragma        comment( lib, "../lib/dll.lib" )
#endif

int        main()
{
        MsgBox        msg;

        msg.showMsg( "Test my DLL :", 11 );

        return 0;
}


__declspec(dllimport) 不是必须的,但是加上后会让效率更高,见MSDN。

14

主题

251

帖子

251

积分

中级会员

Rank: 3Rank: 3

积分
251
发表于 2007-10-7 04:31:00 | 显示全部楼层

Re:请教一下关于DLL 使用的问题

RT

25

主题

82

帖子

82

积分

注册会员

Rank: 2

积分
82
 楼主| 发表于 2007-10-9 13:57:00 | 显示全部楼层

Re:请教一下关于DLL 使用的问题

请问能不能显示调用,不用引用LIB文件?
应该怎么做呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-6-20 19:32

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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