CAPL中的capll制作

@[TOC]CANoe CAPL中的capll制作

引言

最近工作中被同事问道如何生成Vector CANoe使用的CAPL dll。自己去网上查了一些资料,发现关于这方面的资料极少,所以在这里我总结了一下经验教训,希望同行少走弯路。
PS:由于Vector官方未提供dll编译详细信息,且需要符合Vector风格的dll,所以建议在官方示例基础上修改,以满足自己需求。下面介绍一下DLL的制作:

工具准备和环境搭建

1、Vector官网下载CANoe 12.0 SP4 Demo (64 bit)

CANoe

2、visual studio选择

我这里选择安装visual studio 2019(此处偷个懒,安装过程不详细说明,请参照网上教程。嘿嘿…)

编译visual studio工程

1、使用visual studio 2019打开Vector提供的CAPL dll demon,路径如下(默认安装):C:\Users\Public\Documents\Vector\CANoe\Sample Configurations 12.0.189\Programming\CAPLdll\VS 2017 Project
PS:这个路径下有很多实例工程,对大家都比较有帮助。
2、打开VS工程,如图所示:
capldll工程在这里插入图片描述
Capldll.cpp:源文件,函数定义文件(如要添加函数请在这里添加)
首先编译工程,验证demon是否可用。
在这里插入图片描述
为什么官方给的工程编译不成功?难道被骗了???Fuck…经过一番与度娘进行深入沟通,度娘心疼程序员,最终给了完美的介绍:The real question is why did you add /Zp in the 1st place, the solution was disabling the /Zp (structure packing) compiler option英语不好的小伙伴请自行脑补。大概意思是说结构体成员对齐方式不正确,不要采用1字节对齐。感谢度娘!!!!!那怎么修改呢?Project Settings > C/C++ > Code Generation > Struct Member Alignment (change to Default)按捺不住激动的心,颤抖的双手打开国产偷拍,嘿嘿…
在这里插入图片描述
再次尝试,console 弹出激动人心的字符,好爽!!!

无脑夸,大公司品质值得信赖。千辛万苦终于生成dll,距离成功一步之遥,加油!!!

添加自定义函数

关于添加自定义函数,原本不想在这里啰嗦了,但怕一些C语言不好的同学看起来有点困难,所以在这里简单介绍一下吧。

函数定义

这里可以参照capldll.cpp
在这里插入图片描述
appGetDataOnePar为函数名

函数Table定义

dll 中函数导出都在Table中导出的。
在这里插入图片描述
Table类型为CAPL_DLL_INFO4

#define MAXCAPLFUNCPARS_8_1 64        // New struct supporting up to 64 
parameterstypedef struct CAPL_DLL_INFO4{  
char              cdlName[MAX_CDL_NAME2];        // name of the function  
CAPL_FARCALL      adr;                           // address of the function  
const char*       
categoryName;                  // name of function category  const char*       
hintText;                      // hint text for function selection  char              
resultType;                    // type of func result  int               
parCount;                      // no. of parameters  char              
parTypes[MAXCAPLFUNCPARS_8_1]; // types of parameters  unsigned char     
array[MAXCAPLFUNCPARS_8_1];    // depth of array. Without: \0  const char*       
parNames[MAXCAPLFUNCPARS_8_1]; // names of parameters} CAPL_DLL_INFO4;

PS:新手需要注意这个#define MAXCAPLFUNCPARS_8_1 64
函数Table最多64个函数
做完这些准备可以debug了
在这里插入图片描述

Copy capldll.dll文件到CANoe工程目录即可

在这里插入图片描述
注意事项:工程配置包括Debug和Release,区别如下:
1、Release模式相比Debug模式,做了更多的优化,更适合在项目完成后部署到服务器上。而Debug模式更适合在调试的时候使用。
2、使用Debug标记的代码,在Release模式下会被自动删除。
平台选择:1. 如果将Visual Studio的工程类型设置为win32,那么开发的程序既能在32位操作系统上运行,也能在64位操作系统上运行。2. 如果将Visual Studio的工程类型设置为x64,那么开发的程序只能在64位操作系统上运行。CANoe安装:建议安装全部从插件,尤其是底层库

第一次写技术文档,如有错误地方,欢迎提出意见!如有其它关于Vector工具需求,可以私信或者评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值