Suggestions for making DLL multiplexing files using Delphi have some sites that need to make DLL, because familiar, convenient and easy, most use Delphi to make. Some personal suggestions are now proposed on this topic. Try to use a standard DLL interface. Refers to the passing parameter type and function return type cannot be Delphi unique, such as String (ANSISTRING), and dynamic arrays and composite types (such as records) containing these types, and cannot be included with these type members data. Object types to avoid possible errors. If a string type or a dynamic array type is used, and the call party is not a Delphi program, it will basically report. If the caller is Delphi but the caller or the called party does not have the first included unit of the project file, it may be wrong. If the caller is a Delphi application, you may be able to use an object that does not include a prohibition type (String, dynamic array) data member as a parameter or return value, but should also be avoided. If the call party is a Delphi program, and use string or dynamic argument parameters, the first include unit of the two parties must be ShareMem. (C Builder program may be the same, but there is no test.) If the call is not a delphi program, String, dynamic arrays, composite data types and class instances of String or dynamic arrays cannot be used as parameters and return value. Therefore, in order to increase the DLL's multiplexing range, avoid possible errors, the standard WIN32 API standard parameter type should be used, and the String variable used before, and PCHAR (S) conversion can be used. The dynamic array is converted to a pointer type (@Array [0]) and plus the length of the array. If the caller and the called party are Delphi programs, in order to write convenience, do not want to perform the above conversion, it is recommended to use the runtime package. Running package ensures that dynamic allocation data is properly released. This shows this file is only limited to Delphi / C Builder (not like DLL) because of its extension (.bpl). Second, try to avoid using OverLoad's function / procedure, if there is a plurality of ways, you can make functions / process names have a little difference, similar to FormatXXXX, Createxxxx, etc. in Delphi, such as CreateBydefault File, CreateDefault. Finally, as the provider of the DLL, direct programming interface files should be provided, such as .PAS or .dcu in Delphi (preferably .PAS, because it can be commented), C and C . H and .lib. Instead of letting users create themselves. This looks particularly important if you have OverLoad's function / process. In addition, as the Delphi application, the supplied .PAS file can be in advance (using the external specified output function), or it can be a later connection (using loadLibrary, getProcaddress), the DLL provider provides programming interface files, both look Official (or HIQOS), it is guaranteed.