主要是访问地址的问题,例如以下的例子,本来函数的参数是String,但我调用的时候,要用StringBuilder类型,要先给它分配内存,这样才能获取数据,估计其它类型也一样吧
[DllImport("CryptoDll.DLL", EntryPoint="GetMacAdd",  SetLastError=true,
  CharSet=CharSet.Ansi,CallingConvention=CallingConvention.StdCall)]
public static extern bool   GetMacAdd(StringBuilder strMacAdd);

解决方案 »

  1.   

    Knight94() 具体我该怎么做呢?
    我后来,把TargetValuePtr由SQLPOINTER改成了Byte[50],倒是可以了。但不知为何有时程序老是莫名其妙地没有任何提示就退出了?
      

  2.   

    我看你调用的ODBC方面的API,有时C#在调用API是件很麻烦的事(可能最主要的原因就是它没有指针);其实,你要用C#写数据库方面的东西,我建议你用C#的SQL组件,例如:SqlConnection、SqlDataAdapter、SqlCommand、DataSet等等,这些都很方便,还不用考虑底层的东西,至于效率不一定比调用API差。
      

  3.   

    是啊,我当然也像省点事。只是ODBC.NET中没有像OleDbConnection.GetOleDbSchemaTable这样的方法。所以只能自己通过导入ODBC API来实现。