我想把方法Fun(AMessage : string; var AStruTypeID : Integer; AReturnP : Pointer);封装成DLL的接口,应该怎么写呀,
AStruTypeID 为返回值写区分是哪种结构类型AReturnP (record),请指教!string在DLL的接口为PChar,另两个应该怎么样呢?

解决方案 »

  1.   

    Fun(AMessage : pchar; var AStruTypeID : Integer; AReturnP : Pointer);export; stdcall;
      

  2.   

    string 改为pchar
    尽量不要用string
      

  3.   

    顶了。我补充下调用时注意的地方。调用DLL函数分早绑定和晚绑定,也就是静态调用和动态调用
    2楼给出的是静态调用,export。
    如果是动态调用,就没有export这个关键字了,调用时要注意有三个步骤
    LoadLibrary; GetProcAddress; FreeLibrary,缺一不可
      

  4.   

    2楼给出的是静态调用,export
    我给出的是DLL中的代码,不是调用处的代码............
    这才是静态调用:
    function GetDoubleExt(F:Double): Double;stdcall; external 
    'DLLTwo.dll';
    假如DLL要输出供其它应用程序使用的函数或过程,则必须将这些函数或过程列在exports子句中。而这些函数或过程本身必须用export编译指令进行编译,好像不加export关键字也可以....