**Attempt 1**  
  
[DllImport("Hello.dll", EntryPoint="HELLO")]  
  
public static extern string HELLO(string someText);  
  
Console.WriteLine(HELLO("blah"));  
  
**Attempt 2**  
  
[DllImport("Hello.dll", EntryPoint="HELLO", CharSet=CharSet.Auto)]  
  
public static extern string HELLO(ref string someText);  
  
string str = "blah";  
  
Console.WriteLine(HELLO(ref str));  
  
**Attempt 3**  
  
[DllImport("Hello.dll", EntryPoint="HELLO")]  
  
public static extern string HELLO([MarshalAs(UnmanagedType.LPStr)]  
  
string someText);  
  
Console.WriteLine(HELLO("blah"));  
  
**Attempt 4**  
  
[DllImport("Hello.dll", EntryPoint="HELLO")]  
  
public static extern string HELLO(StringBuilder someText);  
  
StringBuilder sb = new StringBuilder("blah");  
  
Console.WriteLine(HELLO(sb));  
  
上述四种方法都试过,还是那个nullref错误,敬请帮助

解决方案 »

  1.   

    好像动态库有问题,你可以搜一下,
    delphi的我没写过,c#掉c++的dll,需要在dll中的函数前extern "C",不是能直接调用的
      

  2.   

    [DllImport("SendMsg.dll",EntryPoint="SendShortMsg",CharSet.Ansi)]试试,DELPHI:Ansi,.NET:Unicode
      

  3.   

    to howcanldo:
    这种说法我还没有听到过,你说的可能是c++ builder调用的时候的问题吧
      

  4.   

    确实是的,
    http://community.csdn.net/Expert/topic/3344/3344697.xml?temp=.6290552
      

  5.   

    to the123:不是这个问题,dllimport中的各个属性都试过了。还是原来的 错误。
      

  6.   

    靠,怎么是DELPHI,我压根就没看过
      

  7.   

    to jedliu:不是啊,使用c#调用其他语言编写的dll文件的问题
      

  8.   

    好像动态库有问题,你可以搜一下,
    delphi的我没写过,c#掉c++的dll,需要在dll中的函数前extern "C",不是能直接调用的dll不是我们写的,我怎么改里面的东西?
      

  9.   

    是不是路径的问题?
    把SendMsg.dll的完整路径加进去试试
      

  10.   

    那个dll应该是delphi写的吧我用c#调用,上面的究竟会是哪里出错呢?
      

  11.   

    回复人: The123(在我地盤這 伱就得聽我的) ( ) 信誉:100  2004-09-07 15:59:00  得分: 0  
     
     
       是不是路径的问题?
    把SendMsg.dll的完整路径加进去试试
      
     不是,我试过全路径的,现在是直接放在bin下的,不是路径的问题
      

  12.   

    你可以自己用delphi写一个dll试试
    不过好像delphi的参数类型和c#不兼容。
      

  13.   

    解决了参数的问题了,但是它不仅近是参数的问题现在用winform的程序可以调用这个dll了,但是用webform还是报空引用错
    System.NullReferenceException 
      

  14.   

    是啊,我也有一个同样的问题,报同样的错误,函数声明、调用都没问题,
    就是参数怎么使用都报空引用错
    System.NullReferenceException 
    实在郁闷,顶一下,解决了也救我。
      

  15.   

    用用这个:
    [DllImport("SendMsg.dll",EntryPoint="SendShortMsg")]
    public static extern int SendMessage( StringBuilder UserID, StringBuilder  Password,StringBuilder MobileNo,StringBuilder Content, StringBuilder SendTime);
      

  16.   

    knight94,你说的方法我已经试过了,不行的。因为他原来的dll文件没有处理好这种参数的问题
    现在我重新做了一个dll来封装原来的 dll,但是出现了在web上无法调用的情况,在控制台确试可以的。这种嵌套调用引起的问题该如何解决呢?
      

  17.   

    to 但是出现了在web上无法调用的情况,在控制台确试可以的。这种嵌套调用引起的问题该如何解决呢?这是有可能的,因为从web上调用,使用的是aspnet这个用户,它是有限制的,而且权限比较低,你试试把它的权限改高(例如,加入administrators这个组)。