如何在非MFC扩展Dll中导出class说明及简单例子(注意,是显式链接方式)相关源码如下:
dll工程中的DllClass.h 内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllexport)//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
CDllClass(void);
void MSG(const char * const str);
};dll工程中的DllClass.cpp内容:
#include "stdafx.h"
#include "DllClass.h"BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
CDllClass::CDllClass()
{
return;
}void CDllClass::MSG(const char * const str)
{
MessageBox(NULL,str,"",MB_OK);
}Dll测试工程中的DllClass.h内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllimport)//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
CDllClass(void);
void MSG(const char * const str);
};
Dll测试工程中DllClassTest.cpp内容:
首部:
#include "DllClass.h"
class DllClass;代码部分:
CDllClass CTest;
CTest.MSG("this is a string into dll");
以上是(借一位兄弟的代码)隐式方法,请大家帮忙把以上代码改成显式链接调用,谢谢,一定买单.
dll工程中的DllClass.h 内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllexport)//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
CDllClass(void);
void MSG(const char * const str);
};dll工程中的DllClass.cpp内容:
#include "stdafx.h"
#include "DllClass.h"BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
CDllClass::CDllClass()
{
return;
}void CDllClass::MSG(const char * const str)
{
MessageBox(NULL,str,"",MB_OK);
}Dll测试工程中的DllClass.h内容:
//此处在dll的头文件中为 dllexport,在应用文件中为dllimport
#define DLLCLASS_API __declspec(dllimport)//导出一个类(包括其方法、属性)
class DLLCLASS_API CDllClass {
public:
CDllClass(void);
void MSG(const char * const str);
};
Dll测试工程中DllClassTest.cpp内容:
首部:
#include "DllClass.h"
class DllClass;代码部分:
CDllClass CTest;
CTest.MSG("this is a string into dll");
以上是(借一位兄弟的代码)隐式方法,请大家帮忙把以上代码改成显式链接调用,谢谢,一定买单.
在DLL中做个接口,传递这个类的指针的指针,在这个接口中用new申请对象。
这样在应用程序中就可以调用了。
其实DLL形式的COM就是这样做的。
我自己用过一种办法就是使用单件技术使类只有一个实例,并提供接口访问类的各种方法
不过归根到底,这种方法其实还是访问方法函数而不是类了