• 本站域名:OceanCoder.cn 若您喜欢本站,请添加至收藏夹!
  • 网站少部分资源来源自网络,如有侵犯您的权益,请联系站长删除!
  • 本站所有文章,除特殊标明外,皆为本人原创,转载请注明出处,谢谢合作!
  • 本站所下载的资源,若无特殊说明,使用统一解压密码:oceancoder.cn
  • 本站已实现布局自适应,支持手机端、pad端访问,欢迎体验
  • 本站部分资源可通过微信公众号留言获取,欢迎体验

[PlantSimulation]#C016#C语言接口学习-官方DEMO功能扩展

PlantSimulation OceanCoder 2020-05-08 263 次浏览 0个评论

功能扩展,增加日志记录功能。

为了记录dll接口方法的调用细节,可以在接口中添加日志文件。此处使用log4cxx进行演示。


一、项目配置

指定log4cxx包含目录和库目录

image.png


二、代码

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


已有 263 位网友参与,快来吐槽:

发表评论