【发布时间】:2015-03-26 11:07:01
【问题描述】:
首先我想说的是,在发布此问题之前,我在这里阅读了大多数其他类似问题的问题。但我的情况略有不同。
我有一个旧的 VB6 应用程序,它使用自定义 C/C++ dll 通过 TCP 发送/读取数据。
该应用程序位于多个用户可以访问的 win2003 服务器的共享网络驱动器上。 dll 位于应用程序路径中,我使用声明来加载它。
VB6:
Public Declare Function Interface_Open Lib "Interface.dll" Alias "Open" As Integer
C/C++ dll:
_declspec(dllexport) int _stdcall Open() { }
现在来说奇怪的部分:该应用程序在 90% 的时间内都可以顺利运行。但是有些用户会随机遇到运行时错误 48“找不到 dll”,而其他用户则不会。
当我尝试调用 dll 时似乎失败了:
Interface_Open
我无法在我的 win7 64 位机器上复制错误,这让我很困惑。我还检查了共享上用户的网络权限,但他们都很好。
我认为问题不在于 C/C++ 代码,因为日志告诉我在进入 dll 之前它失败了。
我应该返回一个 long 值而不是整数吗?这可能是它无法加载 dll 的原因吗?
【问题讨论】:
-
你试过this guy's answer吗?
-
标准问题是它没有说明找不到什么 DLL。这往往不是是您使用的 DLL,您会知道要查找名为 Interface.dll 的文件。它是这个 DLL 使用的一个。就像 C 运行时库一样。往往会意外工作,该 DLL 通常是由其他人安装在机器上的。如果这没有帮助,请让用户运行 SysInternals 的进程监视器。它显示程序正在搜索 DLL 而没有找到它。
标签: c dll vb6 runtime-error