int WINAPI SubmitAExEx(
unsigned char OrgTON, unsigned char OrgNPI, LPCSTR OrgAddr,
unsigned char DestTON, unsigned char DestNPI, LPCSTR DestAddr,
unsigned char PRI, unsigned char RD, unsigned char RP,
unsigned char SRR, unsigned char MR, unsigned char DCS,
unsigned char PID, LPCSTR Schedule, LPCSTR Expire,
unsigned long Default_ID, unsigned char UDHI, unsigned long UDLen,
LPCSTR UserData, LPCSTR ServiceSubType,
unsigned char* byMsgID, unsigned char byPKTotal,
unsigned char byPKNumber, unsigned char byMsglevel,
unsigned char byFeeUserType, LPCSTR sSPID, LPCSTR sFeeType,
LPCSTR sFeeAddr, LPCSTR sFeeCode,unsigned char byUserNum,
LPCSTR sDestAddrs,unsigned long* SM_ID, unsigned char* FCS
)
以上为C++ 中的DLL里的原形函数,其中unsigned char* byMsgID,unsigned long* SM_ID,unsigned char* FCS均为输出参数。
我用C#调用之后的写法 public static extern int SubmitAExEx(
char OrgTON, char OrgNPI, string OrgAddr,
char DestTON, char DestNPI, string DestAddr,
char PRI, char RD, char RP,
char SRR, char MR, char DCS,
char PID, string Schedule, string Expire,
long Default_ID, char UDHI, long UDLen,
string UserData, string ServiceSubType,
out StringBuilder byMsgID, char byPKTotal,
char byPKNumber, char byMsglevel,
char byFeeUserType, string sSPID, string sFeeType,
string sFeeAddr, string sFeeCode, char byUserNum,
string sDestAddrs,out StringBuilder SM_ID,out StringBuilder FCS
);
运行时,为什么会报这样的错误 {尝试读取或写入受保护的内存。这通常指示其他内存已损坏。}
请高人帮忙,所有分都加给你!拜你为师!谢谢!
unsigned char OrgTON, unsigned char OrgNPI, LPCSTR OrgAddr,
unsigned char DestTON, unsigned char DestNPI, LPCSTR DestAddr,
unsigned char PRI, unsigned char RD, unsigned char RP,
unsigned char SRR, unsigned char MR, unsigned char DCS,
unsigned char PID, LPCSTR Schedule, LPCSTR Expire,
unsigned long Default_ID, unsigned char UDHI, unsigned long UDLen,
LPCSTR UserData, LPCSTR ServiceSubType,
unsigned char* byMsgID, unsigned char byPKTotal,
unsigned char byPKNumber, unsigned char byMsglevel,
unsigned char byFeeUserType, LPCSTR sSPID, LPCSTR sFeeType,
LPCSTR sFeeAddr, LPCSTR sFeeCode,unsigned char byUserNum,
LPCSTR sDestAddrs,unsigned long* SM_ID, unsigned char* FCS
)
以上为C++ 中的DLL里的原形函数,其中unsigned char* byMsgID,unsigned long* SM_ID,unsigned char* FCS均为输出参数。
我用C#调用之后的写法 public static extern int SubmitAExEx(
char OrgTON, char OrgNPI, string OrgAddr,
char DestTON, char DestNPI, string DestAddr,
char PRI, char RD, char RP,
char SRR, char MR, char DCS,
char PID, string Schedule, string Expire,
long Default_ID, char UDHI, long UDLen,
string UserData, string ServiceSubType,
out StringBuilder byMsgID, char byPKTotal,
char byPKNumber, char byMsglevel,
char byFeeUserType, string sSPID, string sFeeType,
string sFeeAddr, string sFeeCode, char byUserNum,
string sDestAddrs,out StringBuilder SM_ID,out StringBuilder FCS
);
运行时,为什么会报这样的错误 {尝试读取或写入受保护的内存。这通常指示其他内存已损坏。}
请高人帮忙,所有分都加给你!拜你为师!谢谢!
解决方案 »
- 怎样使窗体放大后里面的控件自己适应放大?要控件一个一个调吗
- 窗体的ICON能调整大小么
- 怎么动态循环得到contextMenuStrip控件的第二个节点 请各位大侠们帮帮忙
- C#程序安装后 登陆上去以后 点击水晶报表报以下错误
- 看一看老消息
- 用C#能否编写静态链接库?或是C#编写的动态链接库能否实现静态库的功能。
- 关于namespace冲突的问题
- 获取oracle服务器当前时间
- 求教,我用C#编了一个ASP页面想在这个页面的一个button点击后转到另一个页面并且附带一个参数date= 2003,应该怎么做呀?
- 我要用C#写一个window应用程序。是与web相关的,如何实现在程序内预览IE的效果?
- 求一正则表达式
- 【求助】【急】DataTable与GridEx的简单关联
unsigned char-〉byte
unsigned long-〉UInt32unsigned char* ->char[]
unsigned long*->UInt32[]关于unsigned char* byMsgID,unsigned long* SM_ID,unsigned char* FCS的变量可以尝试:
char[] FCS = new char[256];
char[] byMsgID = new char[256];UInt32[] SM_ID = new UInt32[256];或者:
IntPtr ptrFCS = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(char)) * 256);
IntPtr ptrMsgID = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(char)) * 256);IntPtr ptrSM_ID = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(UInt32)) * 256);不过SubmitAExEx方法中对应的参数类型也需要修改为IntPtr;读取返回值也需要下面的方式:
char[] FCS = new char[256];
Marshal.Copy(ptrFCS, FCS,0,256);
out StringBuilder SM_ID,out StringBuilder FCS看能不能使用MARSH的非托管类型属性来标记!内存使用非法。
还是继续请兄弟们求助!谢谢!
看看封送处理的资料,注意看看各回调函数!
vb c++ C#
handle void* System.IntPtr 32 位
byte unsigned char System.Byte 8 位
short short System.Int16 16 位
word unsigned short System.UInt16 16 位
int int System.Int32 32 位
uint unsigned int System.UInt32 32 位
long long System.Int32 32 位
bool long System.Int32 32 位
dword unsigned long System.UInt32 32 位
ulong unsigned long System.UInt32 32 位
char char System.Char 用 ANSI 修饰。
lpstr char* System.String 或 System.StringBuilder 用 ANSI 修饰。
lpcstr const char* System.String 或 System.StringBuilder 用 ANSI 修饰。
lpwstr wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
lpcwstr const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
float float System.Single 32 位
double double System.Double 64 位
http://blog.163.com/tellyes_software@126/blog/static/30734086200882352618167/edit/?mode=prev