现在有一个.h头文件,有如下声明
#ifndef CMPP_API_H
#define CMPP_API_Htypedef void (FAR PASCAL *LPCMPPRECEIVECALLBACK)(__int64 nMsgIdint);__declspec (dllexport) int SmsInitialize(LPCTSTR lpszIniFileName);
很急啊,多谢各位帮忙
#ifndef CMPP_API_H
#define CMPP_API_Htypedef void (FAR PASCAL *LPCMPPRECEIVECALLBACK)(__int64 nMsgIdint);__declspec (dllexport) int SmsInitialize(LPCTSTR lpszIniFileName);
很急啊,多谢各位帮忙
解决方案 »
- 怎样得到浏览器的浏览地址?不是从地址栏
- 谁知道在两个Access库间怎样读数据吗?
- 如何通过api,shellexcute函数来察看文件属性
- 怎样才能走上Delphi高手之路?
- 请问如何在word文档中插入图片?
- 判断一个程序是否在运行
- 上一次问的问题,网页出错,回复看不全,只好从问:请问:如何将Doc文档存入到Sql Server数据库Image字段中,并读取出来?
- @@@@@@@@@各位大哥 谁有进销存的软件代码 我急需 要多少分都给@@@@@@@@@
- 急求一个算法!
- 再谈多态——向上映射及VMT/DMT
- 各位大虾,小弟子想要HTTP控件的详细用法,中文的哪里去找呀???
- 关于动态生成控件的问题1
如何将以上C++声明转换为delphi的声明,这些函数是在一个dll中实现的
function FuncName(...),...stdcall 定义原形
实现部分
function FuncName; external 'DLL name' name 'Function name';d 动态
动太调入 dll 偶就不说了
type TProcType = procedure (nMsgIdent :Int64);
用这定义一函数变量, 强制由 GetProcAddress 反回的指针d 写 DLL就简单了
procedure xxx; stdcall{必要}; export; {也可以另一种方法}
{另一种方法}
export;
xxx,
...;
_int64 *
LPCSTR *
bool *
怎么转换成相应的delphi类型,
付值的时候又怎么办呢,
谢了
PChar (LPCSTR *)
PBOOL = ^BOOL;
#define CMPP_API_H
还不明白,
这个C++怎么转换为delphi啊
全部如下:
#ifndef CMPP_API_H
#define CMPP_API_Htypedef void (FAR PASCAL *LPCMPPRECEIVECALLBACK)(__int64 nMsgId, LPCSTR lpszDestnationId,
LPCSTR lpszServiceId, int nMsgFmt,
LPCSTR lpszSrcTermId, LPCSTR lpszMsg, int nMsgLen, bool bReport);__declspec (dllexport) int SmsInitialize(LPCTSTR lpszIniFileName);
__declspec (dllexport) int SmsTerminate();__declspec (dllexport) int SmsConnect();
__declspec (dllexport) int SmsDisconnect();__declspec (dllexport) int SmsSendMessage(__int64 *lpnMsgId,
LPCSTR lpszServiceId,
LPCSTR Fee_terminal_id,
int nMsgFmt,
LPCSTR lpszSrcTermId,
int nDestTermNum,
LPCSTR *lpDestTermIds,
LPCSTR lpszMsg,
int nMsgLen,
BOOL bWait);__declspec (dllexport) int SmsSendSingleMessage(__int64 *lpnMsgId,
LPCSTR lpszServiceId,
LPCSTR Fee_terminal_id,
int nMsgFmt,
LPCSTR lpszSrcTermId,
LPCSTR lpDestTermId,
LPCSTR lpszMsg,
int nMsgLen,
BOOL bWait);__declspec (dllexport) int SmsReceiveMessage(
int nTimeout,
__int64 *lpnMsgId,
LPSTR lpsDestnationId,
LPSTR lpszServiceId,
int *lpnMsgFmt,
LPSTR lpszSrcTermId,
LPSTR lpszMsg,
int *lpnMsgLen,
bool *lpbReport);__declspec (dllexport) int SmsActiveTest(BOOL wait);__declspec (dllexport) int SmsSetReceiveCallback(LPCMPPRECEIVECALLBACK lpfnReceiveCallback);#endif
#define CMPP_API_H
上面的意思是如果没有定义这个CMPP_API_H东西,
就定义这个东西CMPP_API_H。
int SmsActiveTest(BOOL wait);等价于procedure SmsConnect();cdecl;
function SmsActiveTest(nWait: Integer): Integer;cdecl;特别提醒楼主:注意这个调用约定,表示函数按照C语言的方式传递参数,从右到左。不然你会发现调用函数的时候莫名其妙的发生内存错误,找都找不到原因。
{$Define ??}
{$Undef ?}
#define CMPP_API_H
这些编译指令翻译来做什么?不管它就是了。