CANoe - 无法在 CAPL 脚本中打开.dll
CANoe - Could not open .dll in CAPL script
我正在尝试包含我自己的.dll文件并将其功能导出到我的 CAPL 脚本中。
我很确定我已经正确编写了我的.dll文件,这是相关代码,其中一些是从文档中复制/粘贴的:
#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", "x0x0"},
{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文件。该文件位于 CANoe 安装的 exec32 文件中,只是为了确定(和 exec64(。
当我编译我的 CAPL 脚本时,我收到警告:
Warning 2102 at (-1,-1): Could not open C:Program FilesVector CANoe 10.0Exec64LAD.dll, . Logger.can
这反过来意味着我无法在我的 CAPL 脚本中使用导出的"Add(("函数,因为它找不到该函数。
我已经阅读了有关CANoe附加组件的所有文档,并阅读了三个现有的堆栈溢出问题,这些问题都无济于事。如果我移动或重命名.dll CAPL 反而警告找不到该文件。我已经编辑了LAD的权限.dll以允许任何程序完全修改访问权限。
我意识到这可能有点晦涩难懂,但我将非常感谢有关此事的任何帮助。我真的在拔头发,因为感觉我做的一切都是正确的。
(-1,-1( 处的警告 2102:无法打开 C:\Program Files\Vector CANoe 10.0\Exec64\LAD.dll
此类错误的一个可能原因是您混合了 32 位和 64 位。请记住,64 位应用程序不能直接加载 32 位 dll。32 位应用程序和 64 位 dll 也是如此。您不能混合这些。
替代可能性可能是损坏的 dll、可能缺少 dll 的依赖 dll,或者插件机制可能需要的可能缺少导出函数。
在这种情况下,在注释中验证了问题是 32 位和 64 位可执行文件的混合。
问题可能是您的 dll 不位于存储独木舟/canalyzer 配置的同一路径中。请将其粘贴到此处,然后重试。
- 挂起和取消挂起一个文件DLL
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 导入库可以跨dll版本工作吗
- 如何通过cpp程序运行shell脚本
- 从C++dll访问C#中的一行主要参数
- 链接到自行创建的dll失败
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 在程序中编写脚本来编写和编译代码
- C++:将外部库链接到dll库
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 不同的Visual Studio版本中缺少.dll
- 从DLL中删除类的实例
- CANoe - 无法在 CAPL 脚本中打开.dll
- 如何创建C++DLL(使用DEV -C++)并在MT4脚本中使用(逐步)
- 在C 功能执行后,使用GCHANDLE CRALSES将大型结构从C#Unity脚本传递到C DLL
- 运行具有 dll/pyd 依赖项的 python 演示脚本
- 哪些脚本语言在msxml4.dll xsl转换中可用