功能扩展,增加日志记录功能。
为了记录dll接口方法的调用细节,可以在接口中添加日志文件。此处使用log4cxx进行演示。
一、项目配置
指定log4cxx包含目录和库目录
二、代码
1、引用
#include "log4cxx/logger.h" #include "log4cxx/propertyconfigurator.h" using namespace log4cxx; using namespace log4cxx::helpers; LoggerPtr logger;
2、初始化
extern "C" __declspec(dllexport) void LogCxxInit(UF_Value* ret, UF_Value* arg) { string trace = "fa"; string Property = "./log4cxx.properties"; log4cxx::PropertyConfigurator::configure(Property); logger = Logger::getLogger(trace); ret->type = UF_NONE; }
3、调用
extern "C" __declspec(dllexport) void calcSin(UF_Value *ret, UF_Value *arg) { LOG4CXX_INFO(logger, ("calcSin invoke start")); ret->type = UF_REAL; ret->value.real = sin(arg[0].value.real); LOG4CXX_INFO(logger, ("calcSin invoke end")); }
三、项目调用
openConsole var file:string := to_str(getCurrentDirectory, "\PlantSimulationInterfaceDemo.dll") var j := loadLibrary(file) if j > 0 print getLoadedLibrary(j)," is loaded." callLibrary(j,"LogCxxInit") var r := callLibrary(j, "calcSin", PI/6) promptmessage(to_str("sin(PI/6) = ", r)) print "Unloading: ", freeLibrary(j) end
已有 3236 位网友参与,快来吐槽:
发表评论