动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 文件中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。(摘自百度百科)

利用DLL可在Plant Simulation 中调用C++函数。

调用方法

调用DLL主要涉及四个函数,loadLibrary,  getLoadedLibrary,  callLibrary,  freeLibrary,下面分别说明这四个函数的作用和使用方法。

loadLibrary(NameOfDll:<string>)

加载Dll文件。

传入参数为字符型(string)的Dll文件地址。

返回值为该Dll的句柄(Handle),数据类型为整型(integer)。加载错误时返回  -1

getLoadedLibrary(NameOfDll:<integer>)

根据句柄(Handle)查询加载的Dll文件。

传入参数为整型(integer)句柄。

返回值为字符型(string)Dll文件完整路径。

callLibrary(Handle:<integer>, FunctionName:<string> [,Parameter:<any>, …])

调用Dll文件中的函数。

传入参数为句柄(integer),函数名(string),传入参数(any)。

返回值为函数返回值(any)

freeLibrary(NameOfDll:<integer>)

释放Dll文件

传入参数为需要释放的Dll的句柄(integer)

返回值为是否执行成功(boolean)

示例:

var  Handle:integer:= loadLibrary(to_str(ApplicationHome,”\C-Interface\cinterf.dll”))  //确定Dll文件路径
if  Handle>0

print  getLoadedLibrary(Handle), ” is loaded.”  //加载Dll文件

var  ReturnVal:real := callLibrary(Handle, “calcSin”, PI/6)  //调用Dll函数,函数”calcSin”作用为计算正弦值。
print  ReturnVal  //输出返回值,计算sin(π/6),值为0.5

print  “Unloading: “, freeLibrary(Handle)  //释放Dll文件

end

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注