//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)
[DllImport("SMEIDll.dll",CharSet=CharSet.Ansi)]
public static extern int SubmitAExEx(int OrgTON, int OrgNPI, string OrgAddr, int DestTON, int DestNPI, string DestAddr,  int PRI, int RD, int RP, int SRR, int MR, int DCS,  int PID, string Schedule, string Expire,  long Default_ID, int UDHI,long UDLen,
string UserData, string ServiceSubType,   StringBuilder byMsgID, int byPKTotal, 
  int byPKNumber, int byMsglevel, 
  int byFeeUserType,string sSPID, string sFeeType, 
  string sFeeAddr, string sFeeCode,int byUserNum, 
  string sDestAddrs, ref uint SM_ID, ref uint FCS);调用总是说我未引用,请问我的声明有什么问题吗?

解决方案 »

  1.   

    数据宽度不一致,unsigned char得用byte对应
    字符串那些得看是传入还是传出,传入的话直接用string就可以
      

  2.   

    命名空间引用了,我另外两个函数都正常使用
    Sunmast(Maybe I'm Amazed) 您好,能给出代码吗?
      

  3.   

    我改成这样可以调用了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,  StringBuilder byMsgID,
    char byPKTotal, 
        char byPKNumber,
    char byMsglevel, 
        char byFeeUserType,
    string sSPID, 
    string sFeeType, 
        string sFeeAddr,
    string sFeeCode,
    char byUserNum, 
        string sDestAddrs,
    ref Int64 SM_ID,
    StringBuilder FCS);
      

  4.   

    unsigned char*  用StringBuilder 是好办法。
    但unsigned long* SM_ID 变成 ref Int64 SM_ID的话你将失去操作地址的能力。如果你需要操作地址,建议对这些比较“硬”的程序,用unsafe代码。