手机网站设计神器,网页怎么制作二维码,网站开发视频播放无画面,塘厦镇属于东莞哪个区最近做一个动态加载插件的项目#xff0c;插件中的dll 主要是各厂商各型号的读卡器的通用类库#xff0c;stdapi.dll#xff0c;WltRS.dll#xff0c;有的还有进一步封装的dll#xff0c;主要是为了简化通用类库的操作。 这些类库都是用C语言#xff0c;或者C来编写的插件中的dll 主要是各厂商各型号的读卡器的通用类库stdapi.dllWltRS.dll有的还有进一步封装的dll主要是为了简化通用类库的操作。 这些类库都是用C语言或者C来编写的我的项目是用C#语言编写通过Dllimport来调用这些非托管dll的方法。 在做这个项目的时候由于之前的读卡器类库都是通用的所以即时使用两款或者更多款读卡器设备加载的都是同一类dll不会出现问题。 但是在开发与通用类库不兼容的插件的时候都是读卡器插件问题出现了。 一输入用户名密码登陆系统。 1该用户能使用的设备如果都是调用通用类库的读卡器那么使用起来没有问题 2该用户能使用的设备只要有一款与其他的不同那么在切换的时候问题就出现了。 什么问题呢 假如现在有两个设备A和BA属于可以调用通用类库的设备B不能调用通用类库但是有自己的一套单独的类库。 当我启用A设备的时候第一次执行DllImport“sdtapi.dll”或者DllImport“WltRS.dll”后那么这两个dll就会加载到内存中。 这个时候我把A设备禁用启用B设备B设备也有这样的调用语句DllImport“sdtapi.dll”或者DllImport“WltRS.dll”但是B设备的这两个dll与A设备的不同 大家猜猜看这个时候B设备调用的是哪一个dll 一开始我以为B设备调用的是自己目录下的dll。但是经过多次试验我发现我错了。 只要是同名的dll如果不指定绝对路径方式进行加载那么第一次加载之后的所有调用语句都是调用的第一次加载的那个dll中的方法。 所以就造成了设备使用的紊乱。但是如果这样 DllImport“sdtapi.dll”或者DllImport“WltRS.dll”和DllImport“C\\sdtapi.dll”或者DllImport“C\\WltRS.dll” 调用的却不是同一个dll操作系统就会分别调用。我们的程序不能这样写不然对用户的约束性就太大了。。 针对这个问题我的解决办法是将各个插件目录下的文件重新命名然后将代码中的Dllimport中的代码改成一致的名字就OK了。 转载于:https://www.cnblogs.com/onsuccessway/p/3370257.html