哪位大哥大姐知道VC写的DLL,用Delphi来调用有什么讲究吗?小弟需要使用一个DLL,用C写的,有接口文件,但用Delphi写的接口只要一调用,系统就出错,是什么原因啊?程序提示:无法定位程序输入点 GetBrightness 于动态链接库 Handle.dll上.

解决方案 »

  1.   

    DLL不都是那样的么?STDCALL?你的提示说明,DLL上没有这个接口函数http://lysoft.7u7.net
      

  2.   

    不过说来要不是标准的COM 组件的话,跨语言调用会出问题的,有的变量在DELPHI 中不存在,就算知道了
    里面的接口函数和参数,也照样无能为力,
    像用DELPHI 写的DLL 用其他语言调,也是一样的撒~
      

  3.   

    仔细找找原因:
    1.DLL中没有这个函数
    2.调用函数的地址不对
    3.XXXXXX stdcall; external 'Address\XXX.dll';
    4.也有可能是njbaige所提到的原因
      

  4.   

    不同的地方可能就只有参数传递顺序了:Stdcall
    其它的,看楼上
      

  5.   

    注意数据类型的对应关系。例如用C或C++写的DLL文件中如果参数是CHAR *,那么对应到DELPHI中应该为Pchar。
      

  6.   

    从你的问题看来,你在VC中并没有输出函数!而且DLL在写的时候要注意调用约定,一般都用STDCALL
      

  7.   

    楼主可以使用DELPHI带的TDUMP。EXE或者
    VC带的DUMPBIN。EXE,来看看DLL导出了哪些函数,有没有你的GetBrightness。。
      

  8.   

    我有一个可以查看DLL内部函数的工具!哈哈
      

  9.   

    我有一个可以查看DLL内部函数的工具!哈哈
    --------------------------------------
    楼上的仁兄可否发给偶压份,谢谢 -- [email protected]    ,
      

  10.   

    给偶也发一份[email protected]谢谢
      

  11.   

    注意参数的对应关系:CHAR *,那么对应到DELPHI中应该为Pchar。
    用stdcall   
      

  12.   

    delphi中的string与vc中的构造不一样,一般的都没有\0做结束,delphi中的字符串不能当成字符数组来处理,必须要做特殊处理