MyPort.dll是vc++自己生成的。
其实dll比vxd有优势,按Windows的即插即用(P&P)的规范,则要为测控系统开
发特制的微机扩展插板,还要编写相应的驱动程序。这样不仅原来的扩展
插板需改电路,同时还要开发与Windows接口的驱动程序,而对端口读写用dll实现简单
的多。我就把所有的原代码写给你好了,
在VC6.0中选择File|New,在New对话框中选择Project WorkSpace,再
在New Project WorkSpace对话框中选择Dynamic-Link Library选项,并输入工程项目
名(project name),即可生成动态链接库
的工程框架。在下面的程序中使用工程项目名MyPort。将MyPort.cpp加入过程中,再
按F7键,即可生成MyPort.dll及MyPort.lib文件。
//MyPort.h……定义DLL中输出函数原型,也可包含在调用DLL的应用程序中
#ifndef _MYPORT_H_
#define _MYPORT_H_
#include 〈windows.h〉
#include ″defdll.h″
extern ″C″ //使编译程序不对下面括号中的函数名加修饰,可将输出函数用于
非C++程序
{
INTERFACE LONG MyInput(LONG lAdress);
INTERFACE LONG MyOutput(LONG lAdress,LONG lCommand);
}
#endif
//defdll.h……定义用于输出、输入函数的宏INTERFACE
#ifdef DEFDLL
#define INTERFACE _declspec(dllexport)
#else
#define INTERFACE _declspec(dllimport)
#endif
//MyPort.cpp……定义DLL中的输出函数
#include 〈conio.h〉
#define DEFDLL
#include ″MyPort.h″
INTERFACE LONG MyInput(LONG lAdress)
{
return(LONG)_inp((WORD)lAdress);
}
INTERFACE LONG MyOutput(LONG lAdress,LONG lCommand)
{
_outp((WORD)lAdress,(BYTE)lCommand);
return lCommand;
}
在以上的程序MyPort.cpp中定义了DEFDLL,则defdll.h中的宏INTERFACE展开
成_declspec(dllexport),可用于函数的输出,正如上所述,也不用再在DLL的.DEF中加
输出语句。当在调用此DLL的应用程序中包含MyPort.h时,由于没有定义DEFDLL,则
宏INTERFACE展开成-declspec(dllimport),可用于输入函数。
哎,总算写好了,我编译了一下,没有什么问题,你看看吧(呜~~,钱真难赚阿,谁叫
咱是穷人咧)