0

我有一个用 VFP 7 编写的应用程序,在应用程序的某处我使用以下命令调用 dll 中的函数:

declare long FunctionName in DLL_NAME.dll string@, string@
.
.
.
RETURN FunctionName( StringParam1, StringParam2)

调用此函数会产生错误:

The following error has occurred:
Message: Cannot load 32-bit DLL d:\folder\DLL_NAME.dll.

我尝试使用 32/64 位 regsvr 注册 dll ......不走运!

可以帮助识别问题的信息:dll 文件不是本地文件,它位于网络映射驱动器的文件夹中。

非常感谢您的帮助。

4

2 回答 2

0

除了不支持任何 64 位的 VFP 之外,我会看看您试图通过网络加载 dll 的事实。

消除它作为一个可能的问题并将其复制到本地并从中加载它......

尝试消除其他所有内容,包括您的 VFP 应用程序。我会直接从 VFP 命令窗口开始,除了有一个简单的 .prg 文件之外什么也不做。在其中,只放置声明并引用 dll 文件的本地副本。设置参数的值,然后调用该函数。

如果这不起作用,那么在应用程序中调用它的位置无关紧要......您刚刚消除了整套条件和环境。

这几乎就像我有时在我们的应用程序中尝试从互联网请求数据时向客户提供的支持一样。我让他们手动转到他们的浏览器并输入我们的应用程序试图访问的任何 URL。如果他们无法从浏览器访问它,那是来自他们的防火墙、IP 阻止或其他的东西......这与我们的应用程序无关。你可能会遇到类似的情况。忽略所有其他元素,只让少数元素完全独立地测试问题。

于 2012-04-11T21:35:38.853 回答
0

我同意这个问题很可能是 dll 位于共享网络上。我过去通过将文件复制到本地机器来解决了这个问题。

但是,根据这篇文章(下面的链接),如果您添加一个特殊的配置文件,告诉 .Net 框架可以访问某个应用程序的联网 dll。

这是链接:http ://www.west-wind.com/webconnection/docs/index.htm?page=_36e0qlogr.htm

于 2012-04-15T03:14:49.343 回答