功能扩展,增加日志记录功能。
为了记录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
 
    
   
已有 3952 位网友参与,快来吐槽:
发表评论