功能扩展,增加日志记录功能。
为了记录dll接口方法的调用细节,可以在接口中添加日志文件。此处使用log4cxx进行演示。
一、项目配置
指定log4cxx包含目录和库目录
二、代码
1、引用
MATLAB
#include "log4cxx/logger.h"
#include "log4cxx/propertyconfigurator.h"
using namespace log4cxx;
using namespace log4cxx::helpers;
LoggerPtr logger;
2、初始化
MATLAB
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、调用
MATLAB
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"));
}
三、项目调用
MATLAB
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