【求助】请问在VC里,如何导出DLL里的类及其函数?调用程序应该如何写?多谢

c00der 2007-07-11 03:31:19
在DLL里,除了在头文件里把要导出的类声明成:
class _declspec(dllexport) myClass
{
//成员函数
}

外,还需要如何写?
多谢
...全文
304 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
spob110 2007-07-13
  • 打赏
  • 举报
回复
你用DEBUG调试就会有LIB文件了
johnxt 2007-07-12
  • 打赏
  • 举报
回复
MS的VC++技术内幕,你总得看吧?
c00der 2007-07-12
  • 打赏
  • 举报
回复
>>OK,建议你还是先去找本书看看,这样你提高的效率会高一些。
能推荐几本吗?thx
johnxt 2007-07-12
  • 打赏
  • 举报
回复
OK,建议你还是先去找本书看看,这样你提高的效率会高一些。
c00der 2007-07-12
  • 打赏
  • 举报
回复
thx,不过我是想动态调用,还需要 lib吗?
我编译后,好像也没生成.lib?
johnxt 2007-07-12
  • 打赏
  • 举报
回复
这样写头文件:

//CMyClass.h
#ifndef _CMY_CLASS_H_
#define _CMY_CLASS_H_

#ifdef _MY_DLL_EXPORT_
#define _DLL_EXPORT_ __declspec(dllexport)
#else
#define _DLL_EXPORT_ __declspec(dllimport)
#endif

class _DLL_EXPORT CMyClass
{
...
};


#ifndef _MY_DLL_EXPORT_LIB_
#pragma comment(lib,"MyDLL.lib")
#endif

#endif


将_MY_DLL_EXPORT_和_MY_DLL_EXPORT_LIB_加到dll 工程的预编译定义中。
这几个宏只是自己定义的名字,你可以随便改成自己要定义的名字即可。

对于调用者来讲,需要包含CMyClass.h文件,当然要指定头文件,lib文件的路径才能编译通过。

  • 打赏
  • 举报
回复
class _declspec(dllexport) myClass
{
//成员函数
}
就这样写啊。编译成dll后会有一个lib文件和dll文件

包含头文件的时候改成
class _declspec(dllimport) myClass
然后倒入lib库就可以了。
c00der 2007-07-12
  • 打赏
  • 举报
回复
写了一个只有一个函数的dll,测试用,调用也成功了。。。但是这个写成类的就不知道咋整了。。。
c00der 2007-07-12
  • 打赏
  • 举报
回复
头文件我已经添加了。。。关键是不知道如何写啊。。。
不知道如何导出,如何调用。。。。:(
coldplay968 2007-07-12
  • 打赏
  • 举报
回复
DLL里的类 ,还要将导出类的头文件添加到工程中,否则无法编译。
如果导出类可以可以完成一个独立的功能而且调用调用者不需要频繁的调用
dll到处的类的话,就可以引出一个两个函数就可以了。
其实导出类只是代码级的分装,可以减少编译的时间
c00der 2007-07-12
  • 打赏
  • 举报
回复
#ifdef MY_DLL_EXPORT
#define _DLL_EXPORT_ __declspec(dllexport)
#else
#define _DLL_EXPORT_ __declspec(dllimport)
#endif
请问,这一段是加在调用程序里吗?
MY_DLL_EXPORT 需要替换成什么?
多谢
c00der 2007-07-12
  • 打赏
  • 举报
回复
我也知道很多书需要看和学习,并且也在进行其中一部分,
可是工作中急需东西的就需要快速突破了。。。呵呵
johnxt 2007-07-11
  • 打赏
  • 举报
回复
要使用正确的导出类的修饰,对于dll本身来讲,修饰应该是__declspec(dllexport),而对于调用者来讲,应该是__declspec(dllimport)。而为了正确的编译修饰,可以声明如下:
#ifdef MY_DLL_EXPORT
#define _DLL_EXPORT_ __declspec(dllexport)
#else
#define _DLL_EXPORT_ __declspec(dllimport)
#endif
将MY_DLL_EXPORT加到dll 工程的预编译定义中。
现在你可以使用_DLL_EXPORT_宏来修饰你任何想导出的类或函数了。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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