0

我已经尝试了以下代码。

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

CAPL_DLL_INFO CAPL_DLL_INFO_LIST[] =
{
    {"my_visa_init", (CAPL_FARCALL)capl_visa_init, 'D', 1, "F", "\000"},
    ....
    {0,0}
}; 

对于此代码,我收到“解析错误”。我该如何解决?我需要包含一个头文件吗?

4

2 回答 2

0

看来您在这里缺少 CAPL DLL 导出表中定义的三个元素(功能类别、文本、参数名称) 在此处输入图像描述

已创建的函数可以借助表函数导出为 CAPL 代码(CAPL_DLL_INFO_LIST)

表的第一行包含版本信息。该行必须以下列方式定义:

{CDLL_VERSION_NAME, (CAPL_FARCALL)CDLL_VERSION, "", "", CAPL_DLL_CDECL, 0xabcd, CDLL_EXPORT },

示例:使用导出表

void CAPLEXPORT far CAPLPASCAL appPut(unsigned long x)
{
  data = x;
}

CAPL_DLL_INFO4 table[] = {
{CDLL_VERSION_NAME, (CAPL_FARCALL)CDLL_VERSION, "", "", CAPL_DLL_CDECL, 0xabcd, CDLL_EXPORT },

  {"dllPut", (CAPL_FARCALL)appPut, "CAPL_DLL","This function will save data from CAPL to DLL memory",'V', 1, "D", "\000", {"x"}},
  {0, 0}
};
CAPLEXPORT CAPL_DLL_INFO4 far * caplDllTable4 = table;
于 2019-11-21T10:39:00.683 回答
0

为了使 CAPL 编译器和 CAPL 浏览器能够识别 DLL,您必须将其链接到 CAPL 程序。为此,您可以在 CANoe 的选项对话框中输入 DLL。在这种情况下,您拥有的所有 CAPL 程序都可以使用 DLL。另一方面,您可以使用该#pragma library命令在 CAPL 程序的包含部分中输入 DLL。在这种情况下,它将仅适用于该程序。

于 2017-04-14T07:47:06.223 回答