通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL

时间:2024-05-19 18:42:27

如果需要在CAPL中调用 DLL,必须按照 CAPL规定的语法进行创建,安装CANoe/CANalyzer 的时候,随之安装的也有相关的官方demo指导用户去创建DLL

canoe使用的是 11.0版本,
VS 是 VS 2019 社区版

CANoe 11.0版本 demo的安装位置:
通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL

说明:
VS 2017 Project 生成的平台是 X 64版本,本人用VS 2019直接打开,直接编译生成DLL,不可用,不知为何,就放弃了;
VS 2013 Project 生成的平台是 32 版本,直接生成可用

打开 VS 2013 Project 的界面 如图:如果你和我一样对C++语法并不熟,只需要比葫芦画瓢,按照格式,添加自己的function 和 table 就好了(红色圈起来的部分)
通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL

创建DLL的核心点就是 table的配置,因为C++代码和CAPL代码语法有差异,所以需要在Table中配置参数

图 -1 表示 每一个函数 ,需要再table中配置 如图 9个参数
图 -2 表示 CAPL 和 C++ 数据类型对应,以及 需要在图1中填入的 第七个参数

通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL
通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL

  • demo -1 (参数是标量)

注意! Function name 和function address 是可以不同的,比如下图中,appPut
是C++代码中的函数名,dllPut是 在CAPL中被识别的函数名,CAPL中调用appPut是不行的。

通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL

  • demo -2(参数是数组)

一维数组 的参数类型是:\001;二维数组 的参数类型是:\002 。。。 标量的参数类型是:\000;

通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL

  • demo -3 (参数是引用)

-在从CAPL dll导出的函数中也可以使用引用参数。因此必须将函数的参数声明为实际数据类型上的指针。之后,从CAPL导出表中表示数据类型的字符中减去128。然后函数接收传递的变量的地址作为参数的值

通过 Visual Studio 生成 可供 Canoe/CAPL调用的 DLL