简而言之,我有一个 VC++ dll,它连接到一个 MS Access (.mdb) 文件并读取数据。两个 Perl 脚本将加载相同的 DLL 并读取相同的数据。唯一的区别是 perl 脚本位于不同的文件夹中(比如文件夹“A”和文件夹“B”)。
当文件夹“A”中的 Perl 脚本加载 DLL 并打开数据库连接时,它是成功的。
当文件夹“B”中的 Perl 脚本加载 DLL 并打开数据库连接时,它无法打开连接(发生异常)。
当我查看事件查看器时,我发现了以下日志。
Faulting application name: perl.exe, version: 5.12.1.1201, time stamp: 0x4bed097d
Faulting module name: msjet40.dll, version: 4.0.9756.0, time stamp: 0x49246e48
Exception code: 0xc0000005
Fault offset: 0x0007128f
Faulting process id: 0x1634
Faulting application start time: 0x01cecb4f0080e109
Faulting application path: C:\Perl512\Perl\bin\perl.exe
Faulting module path: C:\Windows\SysWOW64\msjet40.dll
Report Id: 42f2cbc9-3742-11e3-91cd-001b2109685d
操作系统: Windows 7 专业版 64 位
MS Office: MS Office 2007 标准版(无MS Access完整版,仅安装Access Runtime Engine)
连接字符串: strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"D:\\Documents\\LocalFile.mdb\"";
注意: DLL 将始终连接到相同的 MS Access 文件并使用相同的连接字符串
由于文件夹“A”中的脚本能够连接到数据库,我认为连接字符串没有问题。关于根本原因的任何想法/线索?
如果您需要任何其他详细信息,请告诉我。提前致谢!