我有一个用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...no luck注册动态链接库!
有助于识别问题的信息: dll文件不在本地,它在网络映射驱动器的文件夹中。
非常感谢你的帮助。
发布于 2012-04-12 05:35:39
除了VFP不支持任何64位之外,我还会考虑到您试图通过网络加载dll的事实。
将其排除为可能的问题并将其复制到本地并从中加载...
尝试删除所有其他内容,包括您的VFP应用程序。我会直接从VFP命令窗口启动,除了一个简单的.prg文件什么也不做。在其中,只放置声明并引用dll文件的本地副本。设置参数的值,然后调用函数。
如果这不起作用,那么它在应用程序的哪个位置被调用都无关紧要……您已经消除了这一整套条件和环境。
这几乎就像我有时在我们的应用程序中尝试从互联网上请求数据时为客户提供的支持。我让他们手动进入他们的浏览器,输入我们的应用程序想要转到的任何URL。如果他们不能从浏览器访问它,这是来自他们的防火墙,IP拦截,或其他…这与我们的应用程序没有任何关系。你可能会遇到类似的情况。忽略所有其他元素,只让少数几个元素独立于问题本身进行绝对测试。
发布于 2012-04-15 11:14:49
我同意这个问题很可能是dlls位于共享网络上。过去,我已经通过将文件复制到本地计算机来解决此问题。
然而,根据这篇文章(下面的链接),如果您添加了一个特殊的配置文件,告诉.Net框架可以访问某个应用程序的网络dll,则可以允许FoxPro应用程序(或任何.exe )使用网络驱动器中的dll。
这是链接:http://www.west-wind.com/webconnection/docs/index.htm?page=_36e0qlogr.htm
https://stackoverflow.com/questions/10111601
复制相似问题