您的位置:程序门 -> vc/mfc -> 进程/线程/dll



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


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


【求助】请问在vc里,如何导出dll里的类及其函数?调用程序应该如何写?多谢[已结贴,结贴人:c00der]
发表于:2007-07-11 15:31:19 楼主
在dll里,除了在头文件里把要导出的类声明成:
class   _declspec(dllexport)   myclass
{
  //成员函数
}

外,还需要如何写?
多谢
发表于:2007-07-11 17:46:481楼 得分:8
要使用正确的导出类的修饰,对于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_宏来修饰你任何想导出的类或函数了。
发表于:2007-07-12 09:27:002楼 得分:0
#ifdef   my_dll_export
#define   _dll_export_   __declspec(dllexport)  
#else
#define   _dll_export_   __declspec(dllimport)  
#endif
请问,这一段是加在调用程序里吗?
my_dll_export   需要替换成什么?
多谢
发表于:2007-07-12 09:36:453楼 得分:4
dll里的类   ,还要将导出类的头文件添加到工程中,否则无法编译。
如果导出类可以可以完成一个独立的功能而且调用调用者不需要频繁的调用
dll到处的类的话,就可以引出一个两个函数就可以了。
其实导出类只是代码级的分装,可以减少编译的时间
发表于:2007-07-12 09:52:014楼 得分:0
头文件我已经添加了。。。关键是不知道如何写啊。。。
不知道如何导出,如何调用。。。。:(
发表于:2007-07-12 09:53:305楼 得分:0
写了一个只有一个函数的dll,测试用,调用也成功了。。。但是这个写成类的就不知道咋整了。。。
发表于:2007-07-12 10:05:426楼 得分:4
class   _declspec(dllexport)   myclass
{
//成员函数
}
就这样写啊。编译成dll后会有一个lib文件和dll文件

包含头文件的时候改成
class   _declspec(dllimport)   myclass
然后倒入lib库就可以了。
发表于:2007-07-12 10:11:587楼 得分:0
这样写头文件:

//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文件的路径才能编译通过。

发表于:2007-07-12 10:47:588楼 得分:0
thx,不过我是想动态调用,还需要   lib吗?
我编译后,好像也没生成.lib?
发表于:2007-07-12 11:27:429楼 得分:0
ok,建议你还是先去找本书看看,这样你提高的效率会高一些。
发表于:2007-07-12 11:40:0810楼 得分:0
> > ok,建议你还是先去找本书看看,这样你提高的效率会高一些。
能推荐几本吗?thx
发表于:2007-07-12 12:00:2311楼 得分:0
ms的vc++技术内幕,你总得看吧?
发表于:2007-07-12 13:42:1412楼 得分:0
我也知道很多书需要看和学习,并且也在进行其中一部分,
可是工作中急需东西的就需要快速突破了。。。呵呵
发表于:2007-07-13 10:26:0613楼 得分:4
你用debug调试就会有lib文件了


快速检索

最新资讯
热门点击