在开发PC桌面程序时经常会用到extension dll,因为它可以导出类,这样很便于系统开发和集成,但用在PPC上,和PC机还是有一定差别的。
1。创建Extension DLL
File->New->Project->MFC Smart Device Dll->MFC extension Dll.
建好工程后,新增一个类,如
class CTheDll : public CWnd
{
DECLARE_DYNAMIC(CTheDll)
public:
CTheDll();
virtual ~CTheDll();
protected:
DECLARE_MESSAGE_MAP()
public:
int AddInteger(int a,int b);//增加一个函数,并实现
};
实现新增的函数后,在类前加 AFX_EXT_CLASS。变为:
class AFX_EXT_CLASS CTheDll : public CWnd
{
DECLARE_DYNAMIC(CTheDll)
public:
CTheDll();
virtual ~CTheDll();
protected:
DECLARE_MESSAGE_MAP()
public:
int AddInteger(int a,int b);
};
完成后编译。将编译好的*.lib,*.h文件拷到测试程序文件夹下。
在测试程序中调用AddInteger();
这时可以调试程序了,测试程序编译不会出错,但运行时报“Unable to start pragma....”。
将dll,拷到程序.exe所在的文件。
2。差异:
PC机上,一般开发程序默认为动态加载dll,而PPC默认为静态加载,所以就会出现上面出现的问题。要是不想出现这样的问题,就一定在开发时,选为use MFC in a shared Dll,而不是use MFC in a static library.