我编写了一个DLL,它提供了从MySQL数据库中提取数据并使用VS 2012中的内置报表查看器生成报表的方法。我们的想法是在VB6程序中使用它。我已经完成了以下过程:
1)在VS中构建DLL,使用"注册COM互操作"选择
2)将DLL和TLB文件放在另一台机器上的VB6程序目录中
3)使用了regasm:" regasm Report.dll / tlb:Report.tlb / codebase" (冗余步骤,如果我已经有VS生成的TLB文件?)
4)将TLB文件添加到VB6中的项目引用
VB6程序构建并执行正常,但是当我运行我的报告时,我得到了#34;自动化错误:系统无法找到指定的文件"。
根据给出的here指令,我已经完成了一个简单DLL的上述过程。这很好。我怀疑我的DLL中使用的引用(MySQL.Data和Microsoft.ReportViewer.WinForms)也可能需要在VB6机器上注册。我已经能够使用MySQL.Data而不是ReportViewer DLL。
如果它有所不同,DLL是在Windows 7 64位机器上构建的,而VB6机器则运行XP 32位。
提前致谢。
答案 0 :(得分:0)
原来问题是我需要为Microsoft.ReportViewer.Common设置 Copy Local 属性,并将相关的DLL文件和我自己的DLL一起复制。希望这可以帮助任何有类似问题的人。