这是一个与 NITGEN FINGKEY(指纹扫描仪)COM NBioBSPCOMLib.dll 连接的 Windows 窗体应用程序。我添加了他们的 dll 作为生成 \obj\Debug\Interop.NBioBSPCOMLib.dll 的参考。Project->Build->Platform 目标在 x86 中。创建设置向导时,我按照以下步骤操作:
- 确保应用程序针对正确的 x86 平台。
- 创建设置向导项目时,不要包含源文件和调试文件。
- 创建设置向导项目后,右键单击创建的项目并单击属性。
- 单击先决条件,然后在指定先决条件的安装位置中选择“从与我的应用程序相同的位置下载先决条件”。单击确定。
- 在目标机器上的文件系统中,添加特殊文件夹并选择“程序文件文件夹”。
- 单击应用程序文件夹,右键单击 Primary output from (appname) (Active),然后选择“Create shortcut from primary output from appname”。重新命名文件。然后将 n 拖放到“程序文件文件夹”。
- 执行 #6 而是将 n 拖放到用户桌面。
- 执行#6,而是将 n 拖放到用户的程序菜单。
- 右键单击应用程序文件夹并选择属性。为 AlwaysCreate 选择 true。
- 对程序文件文件夹、用户桌面和用户程序菜单执行 #8。
- 在应用程序文件夹中右键单击并选择添加文件。选择 interop.NBioBPSCOMlib.dll 并将其属性寄存器设置为 vsdrfCOM。
- 在应用程序文件夹中右键单击并选择添加文件。选择 NBioBSPCOMLib 并将其属性寄存器设置为 vsdrfCOM。
- 构建项目。
当我在 Windows 7 中安装它时,该应用程序可以工作。但是当我在 XP SP 3 中安装它时,我得到一个“试图读取或写入受保护的内存。这通常表明其他内存已损坏。” 例外。
我添加 COM dll 的方式有问题吗?
更新
我将应用程序移植到 .NET Framework 4.0。我添加了 dll 作为参考,设置了嵌入式互操作类型:true。创建了安装程序,而无需在 Application 文件夹中手动添加 dll。现在我收到此错误:“system-runtime-interopservices-comexception-0x80040154”。我从其他帖子中发现:链接不在注册表中,但是指纹的驱动程序安装程序不应该做这部分吗?
我尝试在 dll 上手动执行 regsvr32,但它只会说应用程序遇到问题并需要关闭。当我取消注册 dll 时,comexception 返回。