再谈声明delphi调用惯例 ( 积分: 50 )

  • 主题发起人 主题发起人 ddzhouqian
  • 开始时间 开始时间
D

ddzhouqian

Unregistered / Unconfirmed
GUEST, unregistred user!
这段时间的工作主要是将VC代码转成DELPHI,在此过程中经常进行DLL的调用
因该DLL并无源码,所以总是遇到些问题,尤其是调用惯例方面的,弄的浇头难额。
在此求助于各位大侠(虾),主要的问题如下:
如有一vc DLL文件,想请问如何delphi 中声明其中函数的调用惯例(约定)
1。有vc调用参照,可否能得知其调用惯例?
2.可否通过第三方软件得知该dll的调用惯例?
谢谢各位参与抢答。叙述不清楚请见谅!
 
如果是VC写的一般使用cdecl或者stdcall就可以了
 
很多同志在用VC写DLL的时候,为了方便直接导出成DECL形式的,因为如果要使用STDCALL方式的,必须在DEF文件里进行导出。如果VC里面是使用DECL形式进行导出,而在DELPHI的引用声明里,使用STDCALL形式,那么在程序运行时会发生地址错误。
 
声明一下,什么方式调用都可以
#ifdef __cplusplus
extern "C&quot
{
#endif

extern void __fastcall pso_crypt_table_init_bb(PSO_CRYPT *pcry, const unsigned char *salt);
extern void __fastcall pso_crypt_encrypt_bb(PSO_CRYPT *pcry, unsigned char *data, unsigned);
extern void __fastcall pso_crypt_decrypt_bb(PSO_CRYPT *pcry, unsigned char *data, unsigned length);

#ifdef __cplusplus
}
#endif
象fastcall, delphi中一样有
 
是的,C++的东西都完全可以转换成DELPHI的。
 
后退
顶部