public class CMyYa
{
#region Dll Import
[DllImport("YaShu.dll",EntryPoint="YaData")]
static extern void YaData([In]byte[] pInData,int L, [Out]byte[] pOutData, ref int OutSize);
[DllImport("YaShu.dll",EntryPoint="UnYaData")]
static extern void UnYaData([In]byte[] pInData,int L, [Out]byte[] pOutData, ref int OutSize);
#endregion
public CMyYa()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string Ya(byte[] inData)
{
string outstr="";
int L=inData.Length;
int retL=0;
byte[] outData=new byte[L];
YaData(inData,L, outData,ref retL);
byte[] RealOutData=new byte[retL];
for(int i=0;i<retL;i++)
{
RealOutData[i]=outData[i];
}
//outstr=System.Text.Encoding.Default.GetString(RealOutData);
byte[] outData2=new byte[2000];
int u=0;
UnYaData(RealOutData,retL,outData2,ref u);//每次运行到UnYaData出错提示是未将对象引用设置到对象的实例!
string outstr2=System.Text.Encoding.Default.GetString(outData2);
return outstr; }
....
CMyYa Ya=new CMyYa();
string a="hellogfdjhjiuyerutyureytuieruiotioeiterotoepote[t[etpeptphhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhfg98e5657456456456456";
string b;
byte []p=System.Text.Encoding.Default.GetBytes(a);
//a=System.Text.Encoding.Default.GetString(p); b=Ya.Ya(p);
YaShu.dll在VC下测试正常所以那两个函数据没问题
{
#region Dll Import
[DllImport("YaShu.dll",EntryPoint="YaData")]
static extern void YaData([In]byte[] pInData,int L, [Out]byte[] pOutData, ref int OutSize);
[DllImport("YaShu.dll",EntryPoint="UnYaData")]
static extern void UnYaData([In]byte[] pInData,int L, [Out]byte[] pOutData, ref int OutSize);
#endregion
public CMyYa()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string Ya(byte[] inData)
{
string outstr="";
int L=inData.Length;
int retL=0;
byte[] outData=new byte[L];
YaData(inData,L, outData,ref retL);
byte[] RealOutData=new byte[retL];
for(int i=0;i<retL;i++)
{
RealOutData[i]=outData[i];
}
//outstr=System.Text.Encoding.Default.GetString(RealOutData);
byte[] outData2=new byte[2000];
int u=0;
UnYaData(RealOutData,retL,outData2,ref u);//每次运行到UnYaData出错提示是未将对象引用设置到对象的实例!
string outstr2=System.Text.Encoding.Default.GetString(outData2);
return outstr; }
....
CMyYa Ya=new CMyYa();
string a="hellogfdjhjiuyerutyureytuieruiotioeiterotoepote[t[etpeptphhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhfg98e5657456456456456";
string b;
byte []p=System.Text.Encoding.Default.GetBytes(a);
//a=System.Text.Encoding.Default.GetString(p); b=Ya.Ya(p);
YaShu.dll在VC下测试正常所以那两个函数据没问题
解决方案 »
- DataGridView二维表头
- CollectionBase属性 (IList.Item) (IList.IsReadOnly)一问
- 类库中类的调用?
- 急!!!!我是初学者, 用winform开发了一个小程序,现在需要加一个mp3播放起控件,请问哪里可以下载的到,然后如何编写代码?谢谢了~~
- C# 调用DTS 包 为何 失败
- 想在另一个窗体中,将登陆窗体中的textbox的信息插入到数据库中,该怎么做?
- Winform中滚动条的问题
- 怎么将string 转换成 char* ???
- Visual Studio 2005 DataGridView CellClick事件的问题
- 关于SQL空值和0值的处理
- SQL问题!请高手指点!
- 在父窗口中如何操作子窗口?
int u=0;
UnYaData(RealOutData,retL,outData2,ref u);进行修改和查看,查看RealOutData和retL中的值是否正确,
其次修改u的值为2000,之后再试试。
byte[] outData=new byte[L];
UnYaData(inData,L, outData,ref retL);
byte[] RealOutData=new byte[retL];
for(int i=0;i<retL;i++)
{
RealOutData[i]=outData[i];
}
//outstr=System.Text.Encoding.Default.GetString(RealOutData);
byte[] outData2=new byte[2000];
int u=0;
UnYaData(RealOutData,retL,outData2,ref u);
string outstr2=System.Text.Encoding.Default.GetString(outData2);
VC测试正常
这是VC代码
CString Buf;
Buf="hellogfdjhjiuyerutyureytuieruiotioeiterotoepote[t[etpeptphhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhfg98e5657456456456456";
char yy[100];
int YaL;
YaData((BYTE *)(const char *)Buf,Buf.GetLength(),(BYTE *)yy,YaL); char yy2[200];
int UnYa;
memset(yy2,0,200);
UnYaData((BYTE *)yy,YaL,(BYTE *)yy2,UnYa);
AfxMessageBox(yy2);