只有一个dll文件(dephi写的TEST.DLL),没有相应的.h和.lib文件,用动态链接的方法链接dll
代码
double t=0;
double p=17.5;
int irange=0;
typedef int(*pP2T)(double p,double* t,int* r );
HINSTANCE hDLL;
pP2T P2T;
hDLL=LoadLibrary("WASP.dll");//加载动态链接库.dll文件;
P2T=(pP2T)GetProcAddress(hDLL,"P2T");
P2T(p,&t,&irange);
FreeLibrary(hDLL);//卸载.dll文件;
在VB中调用是正常的,但在VC中无法编译通过,在P2T(p,&t,&irange)处发生异常。
P2T函数在VB中的声明是这样的:
Private Declare Sub P2T Lib "TEST.dll" (ByVal P As Double, ByRef T As Double, ByRef R As Integer)
P2T函数在DEPHI中的声明是这样的:
Procedure P2T(Const P:Double;Var T:Double;Var R:Integer);StdCall;External 'TEST.DLL';

解决方案 »

  1.   

    解决了
    typedef int(_stdcall *pP2T)(double p,double* t,int* r );就OK
      

  2.   

    可以
    delphi里面这样写:
    function ST_TestShow(AHandle: THandle; ACaption: String):BOOL; StdCall;
    exports
    ST_TestShow;
      

  3.   

    我倒!!!_stdcall不加应该可以啊
      

  4.   

    "但在VC中无法编译通过,在P2T(p,&t,&irange)处发生异常。"                   ------异常是运行时产生的,都没编译哪来异常。
      

  5.   

    我还没有从VC中调用Delphi的情况,看了楼主的帖子,我有点信心了!谢谢!
      

  6.   

    vc中默认是__cdecl, __stdcall不是默认的哦