我在Delphi程序中使用c++ dll并从dll导入功能,如下所示:

function  NET_DVR_RealPlay_V40(lUserID: LongInt;var lpPreviewInfo: LPNET_DVR_PREVIEWINFO; fRealDataCallBack_V30:REALDATACALLBACK;pUser:Pointer): LongInt;stdcall; external 'HCNetSDK.dll' name'NET_DVR_RealPlay_V40';

这是C++代码:
LONG NET_DVR_RealPlay_V40(  LONG                     lUserID,
  LPNET_DVR_PREVIEWINFO     lpPreviewInfo,
  REALDATACALLBACK          fRealDataCallBack_V30,
  void                     *pUser,);

但是在运行程序时显示此错误:
在动态链接库HCNetSDK.dll中找不到过程入口点NET_DVR_RealPlay_V40
我认为在dll中不存在此功能,因此可以使用依赖遍历器在dll中找到此功能,其结果是:
enter image description here
我不知道我的问题在哪里

最佳答案

错误消息告诉您DLL不导出具有该名称的函数。一些可能的原因:

  • 您在抄写姓名时犯了一个错误。请记住,这里的字母大小写很重要。
  • 函数以修饰的或损坏的名称导出。

  • 使用dumpbin或Dependency Walker之类的工具检查导出函数的名称,然后从那里进行调试。

    顺便说一句,C++函数声明使它看起来像cdecl是调用约定。

    10-05 22:42
    查看更多