本帖最后由 qiyingdai 于 2011-07-22 11:46:40 编辑

解决方案 »

  1.   

    一般的VC里这样定义:
    extern "C" BYTE M1READER_API OpenReader ();
    Delphi里这样
    function OpenReader: Byte; cdecl; external 'Reader.dll';vc里 __stdcall这样的可能delphi不能直接调用的。
      

  2.   

     你是不是在vc中没有对输出函数的名字做处理啊,哪有默认的名字都带了一堆符号,不是你定义的名字,可以加上一个 def 文件,来规定你输出的函数名
      

  3.   

     你是不是在vc中没有对输出函数的名字做处理啊,哪有默认的名字都带了一堆符号,不是你定义的名字,可以加上一个 def 文件,来规定你输出的函数名
      

  4.   

    function mta001_Exit: Integer; stdcall; external MTASDK name '_mta001_Exit@8';
      

  5.   

    你们好多都没看清楚,他没有dll的代码,那只能改delphi的接口声明,vc是按索引查找的,delphi是按名称查找的,因为vc中他没有用def导出。所以名称不一样,你只能是类似楼上这样,dll导出是什么名称就用什么名称
    function mta001_Exit(): Integer; stdcall; external MTASDK name '_mta001_Exit';
    那个@8是索引,不能放进去
      

  6.   

    晕了,带着勋章的兄弟,你怀疑你是误人子弟,还是勋章根本没有含金量,另外,DELPHI 也可以按索引查找,你知道不?
      

  7.   

    同意四楼的:
    function mta001_Exit: Integer; stdcall; external MTASDK name '_mta001_Exit@8';__stdcall表示:   
    1.参数从右向左压入堆栈   
    2.函数被调用者修改堆栈   
    3.函数名(在编译器这个层次)自动加前导的下划线,后面紧跟一个@符号,其后紧跟着参数的尺寸