我需要为从“.dll”文件调用方法的客户端编写应用程序。 “.dll”文件以前是从“.exe”GUI手动执行的,但现在他们想要自动执行该过程。
我从未使用.dll文件,所以我发现的所有内容都是一整天研究的结果,我还收到了一个使用此工具的小文档:
该接口是一个ActiveX DLL,它提供两个函数(GetUnitInfo和SaveResult)。
目前我只想使用RUNDLL32.exe从Winwdows命令行运行“GetUnitInfo”方法。
这是“GetUnitInfo”方法的文档: GetUnitInfo的接口如下:
Public Function GetUnitInfo( _
ByVal strRequest As String, _
ByRef strUnitInfo As String,
Optional ByVal strStationName As String = "") As Long
示例调用代码可以是:
Dim lRet As Long
Dim strXML as String
lRet = GetUnitInfo( _“<?xml version=""1.0"" ?><GetUnitInfo
xmlns=""urn:GetUnitInfo-schema"" SerialNumber=""BD3ZZTC8MA"" />", strXML)
所以我尝试使用一些虚拟参数运行此方法,因为如果参数不正确,该方法将返回错误。命令:
RUNDLL32.EXE FFTester.dll, GetUnitInfo test1, test2
但是我收到了这个错误:
我用“Dependency Walker”列出了dll文件中的函数:
但这就是所有的功能,通常我都希望列出“GetUnitInfo”。
有人可以帮忙吗?不一定要使用RUNDLL32。
稍后编辑: 我想从一个用JAVA编写的工具调用这个DLL,我试图使用JNA,但是我失败了所以我想从命令行调用dll函数,因为如果这有效,我可以使用进程构建器来执行命令
答案 0 :(得分:0)
我解决了我的问题,我将提供一个解决方案,也许它会帮助其他人。
我使用com4j库为我的dll生成接口。在此之后,您需要注册您的DLL,否则最有问题的是您的代码将抛出“ComException”,您可以阅读更多in my second question。 注册DLL:
对于32位DLL,C:\ Windows \ SysWOW64&gt; regsvr32.exe“DLL的路径”
或
对于64位DLL,C:\ Windows \ System32&gt; regsvr32.exe“DLL的路径”
另外,根据您的DLL类型,32位或64位,您需要使用正确的Eclipse / JDK。