请帮我把下面代码改写成 .dll文件 #include "stdio.h"
#include "windows.h"
extern unsigned int smpp_init() ;
#pragma pack(push, 1)typedef unsigned int uword32;
typedef unsigned char uword8;typedef struct
{
uword32 commandLength; /* 消息包长度,包括此字段 */
uword32 commandID; /* 消息类型 */
uword32 commandStatus; /* 命令成功或失败 */
uword32 sequenceNo; /* 消息序列号,它是消息和它的应答之间的对应标志 */
}MESSAGE_HEAD_T;typedef struct
{
uword8 sourAddrTon; /* 源地址编码类型 */
uword8 sourAddrNpi; /* 源地址编码方案 */
uword8 sourAddrLen; /* 源地址长度 */
uword8 sourAddr[21]; /* 源地址 */
uword8 destAddrTon; /* 目的地址编码类型 */
uword8 destAddrNpi; /* 目的地址编码方案 */
uword8 destAddrLen; /* 目的地址长度 */
uword8 destAddr[21]; /* 目的地址 */
uword8 esmClass; /* 短消息类型 */
uword8 protocolID; /* GSM协议类型 */
uword8 priflag; /* 优先级 */
uword8 registerflag; /* 注册短消息标志 */
uword8 dataCoding; /* 数据编码方案 */
uword8 sm_length; /* 短消息的长度 */
uword8 shortMsg[161]; /* 短消息数据内容 */
}MESSAGE_BODY_T;
typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
MESSAGE_BODY_T messageBody; /* 为SUBMIT_BODY_T的结构类型 */
}SUBMIT_SM_REQ_T;typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
uword32 messageID; /* 短消息ID */
} SUBMIT_SM_RSP_T;typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
MESSAGE_BODY_T messageBody; /* 为SUBMIT_BODY_T的结构类型 */
}DELIVER_SM_REQ_T;typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
uword8 messageID; /* 这里为NULL */
} DELIVER_SM_RSP_T;typedef struct
{
uword8 opCode; /* 1:提交短消息
2:下发短消息的响应 */
union
{
SUBMIT_SM_REQ_T submitSmReq; /*提交短消息*/
DELIVER_SM_RSP_T deliverSmRsp; /*下发短消息响应*/
}SendMessage;}SEND_MESSAGE_T;typedef struct
{
uword8 opCode; /* 1:接收提交短消息响应
2:接收SMC下发短消息 */
union
{
SUBMIT_SM_RSP_T submitSmRsp; /*接收提交短消息响应*/
DELIVER_SM_REQ_T deliverSmReq; /*接收SMC下发短消息*/
}ReceiveMessage;}RECEIVE_MESSAGE_T;#pragma pack(pop)extern uword8 SendMessageToSmc(SEND_MESSAGE_T sendMessagePak);void test(uword8 opcode)
{
SEND_MESSAGE_T sendMessagePak;
uword8 ret=0;
memset(&sendMessagePak,0,sizeof(SEND_MESSAGE_T)); switch(opcode)
{
case 1:
/* 1:提交短消息*/
sendMessagePak.opCode=1;
//sendMessagePak.SendMessage.submitSmReq sendMessagePak.SendMessage.submitSmReq.messageBody.destAddrLen=10;
sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddrLen=10;
sendMessagePak.SendMessage.submitSmReq.messageBody.sm_length=7;
sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddrTon=2;
sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddrNpi=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.destAddrTon=2;
sendMessagePak.SendMessage.submitSmReq.messageBody.destAddrNpi=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.esmClass=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.protocolID=13;
sendMessagePak.SendMessage.submitSmReq.messageBody.priflag=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.registerflag=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.dataCoding=1; memcpy(&sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddr, "0298379005", 10);
memcpy(&sendMessagePak.SendMessage.submitSmReq.messageBody.destAddr, "0298379008", 10);
memcpy(&sendMessagePak.SendMessage.submitSmReq.messageBody.shortMsg, "abcdefg", 7);
ret=SendMessageToSmc(sendMessagePak);
printf("***submit short message!***ret = %d\n", ret);
break;
default:
break;
}
}void test2(uword8 opcode,uword32 seqnum)
{
SEND_MESSAGE_T sendMessagePak;
uword8 ret=0;
memset(&sendMessagePak,0,sizeof(SEND_MESSAGE_T)); switch(opcode)
{ case 2 :
/*2:下发短消息的响应 */
sendMessagePak.opCode=2;
sendMessagePak.SendMessage.deliverSmRsp.messageID=2;
sendMessagePak.SendMessage.deliverSmRsp.messageHead.sequenceNo=seqnum;
ret=SendMessageToSmc(sendMessagePak);
printf("***send delivered short message response!***ret = %d\n", ret);
printf("**************************************************\n");
break; default:
break;
}
}void RecvMessageFromSmc(RECEIVE_MESSAGE_T receiveMessagePak)
{
switch(receiveMessagePak.opCode)
{
case 1:
/* 1:接收提交短消息响应*/
//receiveMessagePak.ReceiveMessage.submitSmRsp
printf("***receive submited short message response!***\n");
break; case 2 :
/*2:接收SMC下发短消息 */
//receiveMessagePak.ReceiveMessage.deliverSmReq
printf("***receive delivered short message!***\n"); test2(2,receiveMessagePak.ReceiveMessage.deliverSmReq.messageHead.sequenceNo);
break; default:
break;
}
}void main()
{ smpp_init(); while(1)
{
Sleep(10000);
test(1);
}// return 0;
}
#include "windows.h"
extern unsigned int smpp_init() ;
#pragma pack(push, 1)typedef unsigned int uword32;
typedef unsigned char uword8;typedef struct
{
uword32 commandLength; /* 消息包长度,包括此字段 */
uword32 commandID; /* 消息类型 */
uword32 commandStatus; /* 命令成功或失败 */
uword32 sequenceNo; /* 消息序列号,它是消息和它的应答之间的对应标志 */
}MESSAGE_HEAD_T;typedef struct
{
uword8 sourAddrTon; /* 源地址编码类型 */
uword8 sourAddrNpi; /* 源地址编码方案 */
uword8 sourAddrLen; /* 源地址长度 */
uword8 sourAddr[21]; /* 源地址 */
uword8 destAddrTon; /* 目的地址编码类型 */
uword8 destAddrNpi; /* 目的地址编码方案 */
uword8 destAddrLen; /* 目的地址长度 */
uword8 destAddr[21]; /* 目的地址 */
uword8 esmClass; /* 短消息类型 */
uword8 protocolID; /* GSM协议类型 */
uword8 priflag; /* 优先级 */
uword8 registerflag; /* 注册短消息标志 */
uword8 dataCoding; /* 数据编码方案 */
uword8 sm_length; /* 短消息的长度 */
uword8 shortMsg[161]; /* 短消息数据内容 */
}MESSAGE_BODY_T;
typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
MESSAGE_BODY_T messageBody; /* 为SUBMIT_BODY_T的结构类型 */
}SUBMIT_SM_REQ_T;typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
uword32 messageID; /* 短消息ID */
} SUBMIT_SM_RSP_T;typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
MESSAGE_BODY_T messageBody; /* 为SUBMIT_BODY_T的结构类型 */
}DELIVER_SM_REQ_T;typedef struct
{
MESSAGE_HEAD_T messageHead; /* 短消息头 */
uword8 messageID; /* 这里为NULL */
} DELIVER_SM_RSP_T;typedef struct
{
uword8 opCode; /* 1:提交短消息
2:下发短消息的响应 */
union
{
SUBMIT_SM_REQ_T submitSmReq; /*提交短消息*/
DELIVER_SM_RSP_T deliverSmRsp; /*下发短消息响应*/
}SendMessage;}SEND_MESSAGE_T;typedef struct
{
uword8 opCode; /* 1:接收提交短消息响应
2:接收SMC下发短消息 */
union
{
SUBMIT_SM_RSP_T submitSmRsp; /*接收提交短消息响应*/
DELIVER_SM_REQ_T deliverSmReq; /*接收SMC下发短消息*/
}ReceiveMessage;}RECEIVE_MESSAGE_T;#pragma pack(pop)extern uword8 SendMessageToSmc(SEND_MESSAGE_T sendMessagePak);void test(uword8 opcode)
{
SEND_MESSAGE_T sendMessagePak;
uword8 ret=0;
memset(&sendMessagePak,0,sizeof(SEND_MESSAGE_T)); switch(opcode)
{
case 1:
/* 1:提交短消息*/
sendMessagePak.opCode=1;
//sendMessagePak.SendMessage.submitSmReq sendMessagePak.SendMessage.submitSmReq.messageBody.destAddrLen=10;
sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddrLen=10;
sendMessagePak.SendMessage.submitSmReq.messageBody.sm_length=7;
sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddrTon=2;
sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddrNpi=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.destAddrTon=2;
sendMessagePak.SendMessage.submitSmReq.messageBody.destAddrNpi=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.esmClass=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.protocolID=13;
sendMessagePak.SendMessage.submitSmReq.messageBody.priflag=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.registerflag=1;
sendMessagePak.SendMessage.submitSmReq.messageBody.dataCoding=1; memcpy(&sendMessagePak.SendMessage.submitSmReq.messageBody.sourAddr, "0298379005", 10);
memcpy(&sendMessagePak.SendMessage.submitSmReq.messageBody.destAddr, "0298379008", 10);
memcpy(&sendMessagePak.SendMessage.submitSmReq.messageBody.shortMsg, "abcdefg", 7);
ret=SendMessageToSmc(sendMessagePak);
printf("***submit short message!***ret = %d\n", ret);
break;
default:
break;
}
}void test2(uword8 opcode,uword32 seqnum)
{
SEND_MESSAGE_T sendMessagePak;
uword8 ret=0;
memset(&sendMessagePak,0,sizeof(SEND_MESSAGE_T)); switch(opcode)
{ case 2 :
/*2:下发短消息的响应 */
sendMessagePak.opCode=2;
sendMessagePak.SendMessage.deliverSmRsp.messageID=2;
sendMessagePak.SendMessage.deliverSmRsp.messageHead.sequenceNo=seqnum;
ret=SendMessageToSmc(sendMessagePak);
printf("***send delivered short message response!***ret = %d\n", ret);
printf("**************************************************\n");
break; default:
break;
}
}void RecvMessageFromSmc(RECEIVE_MESSAGE_T receiveMessagePak)
{
switch(receiveMessagePak.opCode)
{
case 1:
/* 1:接收提交短消息响应*/
//receiveMessagePak.ReceiveMessage.submitSmRsp
printf("***receive submited short message response!***\n");
break; case 2 :
/*2:接收SMC下发短消息 */
//receiveMessagePak.ReceiveMessage.deliverSmReq
printf("***receive delivered short message!***\n"); test2(2,receiveMessagePak.ReceiveMessage.deliverSmReq.messageHead.sequenceNo);
break; default:
break;
}
}void main()
{ smpp_init(); while(1)
{
Sleep(10000);
test(1);
}// return 0;
}
解决方案 »
- 重载了一个CScrollBar类,在ONPAINT中调用GetScrollBarInfo不成功。
- 请问用过 CSizingControlBar 的朋友
- 进程的一点小问题,请帮忙
- listctrl用setimagelist显示图像时为什么只能显示图像的一小部分?
- 求一网格控件,能比设置任意一列为灰色并使所有行颜色相间……
- 100分求完成端口发送数据的方法。先来先得 ^_^
- vc mdi 程序开始时 view没有 创建
- 如何向魔兽客户端的密码框中发送数据?
- 菜鸟学习求助 CreateFileMapping 函数 修改文件内容实际操作
- class AFX_EXT_CLASS CMouseHook: public CObject中的AFX_EXT_CLASS 是什么意思?
- ATL做一个服务,socket侦听
- 怎样将视频文件比如说wav格式的文件存入到数据库?
2.文件上面加上这句:
#pragma comment(linker,"/dll")
3.添加函数:
BOOL __stdcall DllEntry(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:break;
case DLL_THREAD_ATTACH:break;
case DLL_THREAD_DETACH:break;
case DLL_PROCESS_DETACH:break;
}return TRUE;
}
#pragma comment(linker,"/entry:DllEntry")
test1.exp : warning LNK4070: /OUT:DYNAM.dll directive in .EXP differs from output filename "Debug/test1.dll"; ignoring directive
test1.obj : error LNK2001: unresolved external symbol "unsigned char __cdecl SendMessageToSmc(struct SEND_MESSAGE_T)" (?SendMessageToSmc@@YAEUSEND_MESSAGE_T@@@Z)
test1.obj : error LNK2001: unresolved external symbol "unsigned int __cdecl smpp_init(void)" (?smpp_init@@YAIXZ)
Debug/test1.dll : fatal error LNK1120: 2 unresolved externals
Error executing link.exe
smpp_init
这两个函数你的程序里本身就说是:extern了。
所以你还需要把它和你原来编译exe需要的库放在一起编译。