- VS2008下,File->new->Progect,Project types选择Visual C++下面的CLR,Templates选择Class Library。键入项目名称PXI3223Base(C#用的动态链接库的名称),选择路径,点击OK完成项目新建。
- 将VC下的PXI3223DeciceDll.h(API头文件), PXI3223DeviceDll.lib(静态库)复制到项目路径下的PXI3223Base文件夹下;同时将PXI3223DeviceDll.dll(C++下动态链接库)复制到C:\WINDOWS\system32下。在VS2008项目名PXI3223Base上右键,菜单Add->Existing Item..选择PXI3223DeciceDll.h,将PXI3223DeciceDll.h添加到项目目录中。
- 编写PXI3223Base.h及PXI3223Base.cpp,语法参考C++/cli标准。
- 编译,在项目路径\Debug下会生成PXI3223Base.dll。将此DLL文件放在C:\WINDOWS\system32下,在C#测试项目中添加引用,即可使用该动态链接库。
- 注意:在c++的API头文件PXI3223DeciceDll.h中,要添加#include “windows.h”。
- 下面为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;
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;
BOOLEAN PXI3223_API PXI3223_OpenCard(DWORD DevNum);
BOOLEAN PXI3223_API PXI3223_Close(DWORD DevNum);
BOOLEAN PXI3223_API PXI3223_ResetAll(DWORD DevNum);
BOOLEAN PXI3223_API PXI3223_IOOutput(DWORD DevNum, UINT outputData);
BOOLEAN PXI3223_API PXI3223_I