1

这是一个与 NITGEN FINGKEY(指纹扫描仪)COM NBioBSPCOMLib.dll 连接的 Windows 窗体应用程序。我添加了他们的 dll 作为生成 \obj\Debug\Interop.NBioBSPCOMLib.dll 的参考。Project->Build->Platform 目标在 x86 中。创建设置向导时,我按照以下步骤操作:

  1. 确保应用程序针对正确的 x86 平台。
  2. 创建设置向导项目时,不要包含源文件和调试文件。
  3. 创建设置向导项目后,右键单击创建的项目并单击属性。
  4. 单击先决条件,然后在指定先决条件的安装位置中选择“从与我的应用程序相同的位置下载先决条件”。单击确定。
  5. 在目标机器上的文件系统中,添加特殊文件夹并选择“程序文件文件夹”。
  6. 单击应用程序文件夹,右键单击 Primary output from (appname) (Active),然后选择“Create shortcut from primary output from appname”。重新命名文件。然后将 n 拖放到“程序文件文件夹”。
  7. 执行 #6 而是将 n 拖放到用户桌面。
  8. 执行#6,而是将 n 拖放到用户的程序菜单。
  9. 右键单击应用程序文件夹并选择属性。为 AlwaysCreate 选择 true。
  10. 对程序文件文件夹、用户桌面和用户程序菜单执行 #8。
  11. 在应用程序文件夹中右键单击并选择添加文件。选择 interop.NBioBPSCOMlib.dll 并将其属性寄存器设置为 vsdrfCOM。
  12. 在应用程序文件夹中右键单击并选择添加文件。选择 NBioBSPCOMLib 并将其属性寄存器设置为 vsdrfCOM。
  13. 构建项目。

当我在 Windows 7 中安装它时,该应用程序可以工作。但是当我在 XP SP 3 中安装它时,我得到一个“试图读取或写入受保护的内存。这通常表明其他内存已损坏。” 例外。

我添加 COM dll 的方式有问题吗?

更新

我将应用程序移植到 .NET Framework 4.0。我添加了 dll 作为参考,设置了嵌入式互操作类型:true。创建了安装程序,而无需在 Application 文件夹中手动添加 dll。现在我收到此错误:“system-runtime-interopservices-comexception-0x80040154”。我从其他帖子中发现:链接不在注册表中,但是指纹的驱动程序安装程序不应该做这部分吗?

我尝试在 dll 上手动执行 regsvr32,但它只会说应用程序遇到问题并需要关闭。当我取消注册 dll 时,comexception 返回。

4

1 回答 1

1

是的,安装程序日志非常冗长:) 但您只需在其中搜索“NBioBSPCOMLib”,您就会看到他在用它做什么。在您的情况下,它有点奇怪,该文件放在 C:\Program Files\Wikonec\LTODoctorVerify\Interop.NBioBSPCOMLib.dll 中(参见第 1024 和 1025 行),但稍后当我们想要注册它时,路径“file:// /C:/Users/Jemuel/Documents/Visual Studio 2010/Projects/fingerprint/FingerPrintValidate/bin/Debug/Interop.NBioBSPCOMLib.dll”(第 1124 行)。如果我认为windows7是你的开发电脑而winXP是没有visual studio的测试机,我是对的?

于 2013-01-09T11:53:03.990 回答