首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >CANoe -无法在CAPL脚本中打开.dll

CANoe -无法在CAPL脚本中打开.dll
EN

Stack Overflow用户
提问于 2020-06-25 16:48:44
回答 1查看 2.7K关注 0票数 0

我试图包含自己的.dll文件,并将其函数导出到CAPL脚本中。

我确信我已经正确地编写了我的.dll文件,下面是相关的代码,其中一些代码是从文档中复制/粘贴的:

代码语言:javascript
运行
复制
#include "pch.h"
#include "CDLL.h"


long CAPLEXPORT far CAPLPASCAL addCAPL(long a, long b) {
    return a + b;
}

#ifdef __BCPLUSPLUS__
#pragma warn -pin
#endif

// Define how to export functions to capl,
// Arg0 = name, arg1=function, arg2=return type, arg3=# of params, arg4=type of params, args5=depth of param if array (aboslutely useless as c++ cannot used 2+D arrays as params without knowing the dimensions)
CAPL_DLL_INFO CAPL_DLL_INFO_LIST[] = {

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

 {"Add",    (CAPL_FARCALL)addCAPL,      'L', 2, "LL", "\x0\x0"},

 {0,0}
};

// Magic export table to capl function?
unsigned long CAPLEXPORT __cdecl caplDllGetTable(void)
{
    return (unsigned long)CAPL_DLL_INFO_LIST;
}

我在测试一个简单的加法器函数。所需的CDLL.h包括在内,cpp代码成功地编译成一个.dll (LAD.dll)。

在CANoe中,我在->编程-> CAPL DLL下在模拟和测量模式下添加了.dll文件。该文件位于exec32安装的CANoe文件中,只是为了确保(以及exec64)。

在编译CAPL脚本时,我会收到以下警告:

代码语言:javascript
运行
复制
Warning   2102 at (-1,-1): Could not open C:\Program Files\Vector CANoe 10.0\Exec64\LAD.dll, .  Logger.can

这又意味着我不能在CAPL脚本中使用导出的'Add()‘函数,因为它找不到函数。

我已经阅读了所有关于CANoe加载项的文档,并阅读了三个现有的堆栈溢出问题,但都没有用。如果我移动或重命名.dll,则警告无法找到该文件。我已经编辑了LAD.dll的权限,以允许任何程序完全修改访问。

我意识到这可能有点模糊,但我非常希望能在这件事上提供任何帮助。我真的把头发拔出来了,因为我觉得我做的一切都是正确的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-26 11:37:22

警告2102 at (-1,-1):无法打开C:\Program \Vector 10.0\Exec64\LAD.dll

造成这种错误的一个可能原因是您混合了32位和64位。记住,64位应用程序不能直接加载32位dll。32位应用程序和64位dll也是如此。你不能把这些混在一起。

其他可能性可能是损坏的dll、可能缺少dll的依赖dll或可能缺少插件机制所需的导出函数。

在这种情况下,在注释中验证了问题是32位和64位可执行文件的混合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62580358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档