C# Load Library Dll问题
我有两个 两个动态库 VC6.0++开发,编译成Release实体 OUR_IDR.dll 和 IDUSB.dll
OUR_IDR.dll :
函数名:idr_read
功能: 寻卡并返回该卡的序列号
原始声明 unsigned char __stdcall idr_read (unsigned char *serial)
输入: 形参*serial只需指向一个至少已分配了5个char空间的可写数组 unsigned char *指针, serial的下标由0开始。Serial数组的内容无需赋值,因为此数组仅用于返回值。
返回: 返回unsigned char值,并将寻到的卡的序列号传值到*serial数组。
但是每次调用都出问题
返回信息: 23 但是驱动确实是放在 project/Bin/Debug 下了 Bin 下也放了
在VC++ 下测试是通过的..
还有就是每次我怎么能一刷卡就调用到这个方法
要写个监视么?
PS: 不要太关注于头像...那只是一张图片而已...
OUR_IDR.dll :
函数名:idr_read
功能: 寻卡并返回该卡的序列号
原始声明 unsigned char __stdcall idr_read (unsigned char *serial)
输入: 形参*serial只需指向一个至少已分配了5个char空间的可写数组 unsigned char *指针, serial的下标由0开始。Serial数组的内容无需赋值,因为此数组仅用于返回值。
返回: 返回unsigned char值,并将寻到的卡的序列号传值到*serial数组。
public class LoadLibraryDll
{
/// <summary>
/// 载入DLL,读卡,返回卡信息
/// </summary>
/// <param name="i"></param>
/// <returns></returns>
//以C元素指针,从托管到非托管进行封装处理
[DllImport("OUR_IDR.dll", EntryPoint = "idr_read")]
public static extern byte idr_read([MarshalAs(UnmanagedType.LPArray)] byte[] serial);
[DllImport("OUR_IDR.dll")]
public static extern byte pcdgetdevicenumber([MarshalAs(UnmanagedType.LPArray)] byte[] devicenumbe);
}
public class ReturnCardRead
{
//创建数据缓存区间
byte[] cardNo = new byte[10];
//返回状态消息
string statusMsg = null;
/// <summary>
/// 读取卡号
/// </summary>
/// <returns></returns>
public String IdrRead()
{
try
{
//调用非托管DLL方法,并返回处理结果
byte readCardInfo = LoadLibraryDll.idr_read(cardNo);
//数据分割
string strValue = null;
//读取缓存控件大小
for (int i = 0; i < cardNo.Length; i++)
{
//每个空间的数据转换字符串
strValue += cardNo[i].ToString();
if (strValue.Length == 1)
strValue = "0" + strValue;
strValue += strValue;
}
//截取
strValue = strValue.Substring(2, 8);
//转化成非0开头的数字
int intTemp = Convert.ToInt32(strValue, 16);
strValue = intTemp.ToString();
//#define ERR_REQUEST 8//寻不到卡
//#define ERR_NONEDLL 21//没有动态库
//#define ERR_DRIVERORDLL 22//动态库或驱动程序异常
//#define ERR_DRIVERNULL 23//驱动程序错误或尚未安装
//#define ERR_TIMEOUT 24//操作超时,一般是动态库没有反映
//#define ERR_TXSIZE 25//发送字数不够
//#define ERR_TXCRC 26//发送的CRC错
//#define ERR_RXSIZE 27//接收的字数不够
//#define ERR_RXCRC 28//接收的CRC错
但是每次调用都出问题
返回信息: 23 但是驱动确实是放在 project/Bin/Debug 下了 Bin 下也放了
在VC++ 下测试是通过的..
还有就是每次我怎么能一刷卡就调用到这个方法
要写个监视么?
PS: 不要太关注于头像...那只是一张图片而已...
...全文
相关推荐
QT 调用 C# DLL(CLR)
接下来,确保C# DLL编译为“Any CPU”或与你的Qt应用相同的架构(如x86或x64),以避免架构不匹配的问题。
java调用c#写的dll
例如:```javapublic interface MyCLibrary extends Library { // 假设C# DLL中有方法 int Add(int a, int b); int Add
Java 调用 C# DLL
```javapublic interface MyCLibrary extends Library { MyCLibrary INSTANCE = (MyCLibrary) Native.load("
c#调用C++ 的DLL带有CALLback
### C#调用C++ DLL带有CALLBACK回调参数的方法#### 概述在软件开发过程中,有时我们需要在一种编程语言中调用另一种语言编写的动态链接库(Dynamic Link Library,简称
Loadrunner调用DLL文件函数.pdf
如果需要调用C#编写的DLL,需要其他方法,因为VuGen不支持。DLL函数示例:创建一个简单的求和函数`Sum`,并将其声明为导出函数。


