在VB中调用VC写的DLL,提示找不到入口点(错误号:453)。请问应如何调用才会正常?代码如下:
Private Declare Function RebootSystem Lib "sysfunction.dll" ()Private Sub Command1_Click()
    RebootSystem
End Sub

解决方案 »

  1.   

    指定的 DLL 函数未找到(错误 453)
    在用户库引用中找到动态链接库 (DLL),但在 DLL 内找不到指定的 DLL 函数。此错误有以下的原因和解决方法: 在函数声明中指定了错误的序号: 
    检查序号或以名称调用的函数。所给的 DLL 名称虽正确,但指定的函数的版本并非当前的。 
    从机器上可得到正确的版本,但如果路径中含有错误版本的目录是在含有正确版本的目录之前的话,就会访问到错误的 DLL。检查机器上不同的版本,如果是较旧的版本,联系供给商以取得较新的版本。如果在 32-位 Microsoft Windows 平台上工作的话,DLL 名称和别名(如果使用的话)都必须正确。 
    确保 DLL 名称和别名都正确。有些 32-位 DLL 包含少量不同版本的函数,以适应 Unicode和 ANSI字符串。函数名称尾端的 "A" 表示是 ANSI 版本。函数名称尾端的 "W" 表示是 Unicode 版本。 
    如果函数有字符串类型参数,试着在函数名称尾端加上 "A"。
      

  2.   

    这个DLL是我自己写的DLL,但不是专为这个VB程序写的。不存在楼上兄弟贴出内容中说的问题。而一楼说的好像要对DLL进行注册,这个DLL没有写注册函数。
      

  3.   

    可能是你的DLL文件没有正确的将函数导出,在VC项目中增加一个YourProjectName.Def文件,文件内容如下:LIBRARY YourProjectName
    DESCRIPTION " 描述"
    EXPORTS
    YourFunctionName
    然后在重新编译你的DLL函数库。
      

  4.   

    那个DLL应当没有问题,我在其它VC项目中已经多次使用它了。不过没有做Def文件。
      

  5.   

    RebootSystem 名称大小写有没有正确
      

  6.   

    不用 def 定义也可以,要在导出函数加extern "C" 
    否则 只能在vc 内调用
      

  7.   

    VC 中有没有导出这个函数,而且要用 __stdcall 方式。
      

  8.   

    VC中的相关代码:#ifdef SYSFUNCTION_EXPORTS
    #define SYSFUNCTION_API __declspec(dllexport)
    #else
    #define SYSFUNCTION_API __declspec(dllimport)
    #endifSYSFUNCTION_API void RebootSystem();
      

  9.   

    #define SYSFUNCTION_API extern "C"__declspec(dllexport)