动态链接库(DLL)应用
动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 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