@[TOC]CANoe CAPL中的capll制作
引言
最近工作中被同事问道如何生成Vector CANoe使用的CAPL dll。自己去网上查了一些资料,发现关于这方面的资料极少,所以在这里我总结了一下经验教训,希望同行少走弯路。
PS:由于Vector官方未提供dll编译详细信息,且需要符合Vector风格的dll,所以建议在官方示例基础上修改,以满足自己需求。下面介绍一下DLL的制作:
工具准备和环境搭建
1、Vector官网下载CANoe 12.0 SP4 Demo (64 bit)
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.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工具需求,可以私信或者评论