header-files - 如何在 CANoe/CAPL 中包含 .h 或 .dll 文件

标签 header-files dllimport capl canoe

我想在 CAPL 中集成一个头 .h 或 .dll 文件(具体来说是 Visa32.dll、visa.h 或 sicl.h)来控制万用表 34461A。如何在 CANoe 中包含 .h 文件或 .dll 文件?
我创建了一个名为万用表的 ECU 模块。谢谢,

最佳答案

在 CAPL 中包含外部 DLL 是可能的,但您需要为要使用的所有函数创建一个包装器。

看看\CANoe\Demo_AddOn\Capldll具有这样一个包装器的目录。这是一个 MSVC 项目,将一些简单的函数导出到 CAPL,例如 int f(int a, int b) {return a+b;} .

您需要做的是将您的库文件(Visa32.dll、visa.h)添加到此 Capldll 项目,并为您要从 CANoe 调用的所有函数定义包装器。例如,如果您有 int visa_init(double arg)在 Visa32.dll 中,您将创建一个包装器:

int CAPLEXPORT far CAPLPASCAL capl_visa_init(double arg)
{
    return visa_init(arg);
}

您还需要将函数的原型(prototype)添加到导出表中:
CAPL_DLL_INFO CAPL_DLL_INFO_LIST[] =
{
    {"my_visa_init", (CAPL_FARCALL)capl_visa_init, 'D', 1, "F", "\000"},
    ....
    {0,0}
}; 

一旦你成功构建了你的包装 DLL(如果你重用示例,它将被称为 capldll.dll),你需要将它导入 CANoe,你将能够通过你在导出表中定义的名称调用函数,例如my_visa_init(1.0);

关于header-files - 如何在 CANoe/CAPL 中包含 .h 或 .dll 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33341136/

相关文章:

c - 定义全局变量,它将被多个 .c 文件使用

c# - 从 C 到 C# 的错误编码

c# - 将大量数据从 Rust FFI 库返回给 C# 调用者的最快方法是什么?

c# - 将 C++ 自定义库函数导入到 C# 中

testing - 检查通信矩阵上是否存在错误帧

c - 变量定义应该在头文件中吗?

c++ - gcc -I 不更改包含目录

can-bus - 使用 CAPL 在 CANoe 中通过 ISO-TP(传输协议(protocol))传输数据

c - dirent.h(opendir、readdir、closedir)的代码在哪里? undefined symbol