将VC++动态链接库封装成C#可以用的动态链接库步骤

  1. VS2008下,File->new->Progect,Project types选择Visual C++下面的CLR,Templates选择Class Library。键入项目名称PXI3223Base(C#用的动态链接库的名称),选择路径,点击OK完成项目新建。
  2. 将VC下的PXI3223DeciceDll.h(API头文件), PXI3223DeviceDll.lib(静态库)复制到项目路径下的PXI3223Base文件夹下;同时将PXI3223DeviceDll.dll(C++下动态链接库)复制到C:\WINDOWS\system32下。在VS2008项目名PXI3223Base上右键,菜单Add->Existing Item..选择PXI3223DeciceDll.h,将PXI3223DeciceDll.h添加到项目目录中。
  3. 编写PXI3223Base.h及PXI3223Base.cpp,语法参考C++/cli标准。
  4. 编译,在项目路径\Debug下会生成PXI3223Base.dll。将此DLL文件放在C:\WINDOWS\system32下,在C#测试项目中添加引用,即可使用该动态链接库。
  5. 注意:在c++的API头文件PXI3223DeciceDll.h中,要添加#include “windows.h”。
  6. 下面为PXI3223DeciceDll.h的代码
#define  PXI3223_API __declspec(dllexport)__stdcall
#else
#define  PXI3223_API __stdcall
#endif

#include "windows.h"

#define MaxNum  4

struct ADConfigParam
{
    UINT channelSelect;         //通道选择
    UINT sampleRate;            //采样速率
    UINT sampleCount;           //采样次数
    UINT fifoLevel;             //fifo中断级别
    UINT range;                 //量程范围
};
//通道补偿参数
struct CompParam
{
    BOOL    bCompOffset[8];
    BOOL    bCompGain[8];
    float   fCompOffset[8];
    float   fCompGain[8];
};
typedef enum _RET_STATUS
{
    RET_SUCCESS            =  0,
    RET_DEVICE_INITIALFAIL = -1,
    RET_DEVICE_NONEXIST    = -2,
    RET_DEVICE_CLOSEFAIL   = -3,
    RET_EVENT_CREATEFAIL   = -4,
    RET_IRP_SENTFAIL       = -5,
    RET_PARAM_ILLEGAL      = -6,
    RET_UNKOWN_ERROR       = -7,
    RET_Thread_CreateFail  = -8,
    RET_Synchronize_error  = -9,
    RET_Thread_AlreayRuning =-0xa,
    RET_ALLOCATEMEM_FAIL    = -0xB,
    RET_Thread_NotRunning   = -0x0c,
    RET_EVENT_REGISTER_FAIL = -0x0d,
    RET_THREAD_SETPRI_FAIL  = -0x0e,
    RET_THREAD_RESUME_FAIL  = -0x0f

}RETSTATUS,*PRESTATUS;

//#ifdef __cplusplus
//extern "C" {
   
//#endif

//打开板卡。
//devNum:设备号,从0开始
BOOLEAN PXI3223_API PXI3223_OpenCard(DWORD DevNum);

//功能:  关闭板卡
//参数:  DevNum      板卡号
//返回值:true        操作成功
//        false       操作失败
BOOLEAN  PXI3223_API PXI3223_Close(DWORD DevNum);


//复位,对9054寄存器复位
//devNum:设备号,从0开始
BOOLEAN  PXI3223_API  PXI3223_ResetAll(DWORD DevNum);




////////////////////////////IO输入输出函数,两个函数不能同时使用,视硬件情况而定///////////////////////////////////////
//DevNum:设备号,从0开始
// outputData:低七位分别对应七个通道,从低位到高位分别为1-7通道,如outputData=0x03则通道IO0和通道IO1为高
BOOLEAN PXI3223_API PXI3223_IOOutput(DWORD DevNum, UINT outputData);

//DevNum:设备号,从0开始
// *pInputData:低七位分别对应七个通道,从低位到高位分别为1-7通道,如*pInputData=0x03则通道IO0和通道IO1为高
BOOLEAN PXI3223_API PXI3223_I
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值