想把一个类封装在一个dll中,然后在外部调用,定义对象啊什么的。请问怎么操作,和封装一个方法函数一样吗?
不知道表达清楚不,我演示一下。
假如我在dll中定义的这个类是:A ,此类里面有很多的函数,其中有个show函数。
然后我在工程里面调用这一个类 定义:
A a;
a.show();
够清楚了吧,谢谢前辈们指教。
不知道表达清楚不,我演示一下。
假如我在dll中定义的这个类是:A ,此类里面有很多的函数,其中有个show函数。
然后我在工程里面调用这一个类 定义:
A a;
a.show();
够清楚了吧,谢谢前辈们指教。
{.....
};
这样就可以导出类了,另外的工程包含头文件将__declspec( dllexport ) 改成__declspec( dllimport )就能使用
#ifdef TEST_EXPORT
#define TEST_EXPORT __declspec(dllexport)
#else
#define TEST_IMPORT __declspec(dllimport)
#endif
你直接用dll中,定义一个TEST_EXPORT这样的东西!头文件这样就可以直接被包含了!你引用的地方,就不用了定义TEST_EXPORT这样的东西了!
class TEST_EXPORT A
{.....
};
在该文件下
LIBRARY Dll//.dll名
EXPORTS //导出类
A
不要写什么DEF,只要这样处理:
#ifndef SDK_SYSTEM_H_
#define SDK_SYSTEM_H_class SDKEXPORT System
{
public:
// 判断用户是否具有管理员权限
bool isAdminPrivilege(const wchar_t* userName); bool getUserName(wchar_t* buf, DWORD len); // 提升进程权限
bool setProcessPrivilege(HANDLE process, const wchar_t* privilegeName = SE_DEBUG_NAME);
};#endif // SDK_SYSTEM_H_其中:
SDKEXPORT 的定义为:
#ifdef __cplusplus
#define DLLEXPORT extern "C" __declspec(dllexport)
#else
#define DLLEXPORT __declspec(dllexport)
#endif#define SDKEXPORT __declspec(dllexport)编译成DLL,包含相关头文件和lib,就可以使用了。
只是,导出类时,注意:成员变量不要用容器。
实在要用,就用容器的指针。
extern "C" __declspec(dllexport) A* CreateInstance()
{
return new A();
}
A为类名,导出这个函数就可以了使用:
int main
{
A* p = (A*)CreateInstance;
p->类方法
}
class AFX_EXT_CLASS CSystem使用时和不是DLL的MFC类一样。
http://topic.csdn.net/u/20080508/10/5076a842-2a0e-42be-839f-42f0c26c5ead.html
动态链接程序的编写。这里面有,就是直接导出类。
__declspec(dllexport) class a
#else
__declspec(dllimport)class a
#endif
{
virtual void Show=0;
};然后定义类a
class aa : public a
{
public:
aa();
~aa();
public:
vois Show();
}