void TV_GetSerial (char far *)
对于一个这样的c语言函数如何在c#中传递一个值并得到内容?
我在c#中是这样定义的
[DllImport("wwt.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
public static extern void TV_GetSerial([Out] string sSerial);
调用时
string str = "";
TV_GetSerial(str);
Console.write(str);
可是str中是空值,没有任何返回,我该怎么做,怎么调用?高人指点。

解决方案 »

  1.   

    public static extern void TV_GetSerial([In,Out] string sSerial);改成In,Out看看,这个声名应应该没什么问题
      

  2.   

    调用时你要传:TV_GetSerial(ref str);  ref 这个是关键,不然不会返回值的
      

  3.   

    string虽然是引用类型,但是在方法调用中还是以值传递的方式。可以试试强制按引用传递,out参数不需要显式声明。
    string str;
    TV_GetSerial(out str);
    Console.write(str);
      

  4.   

    谢谢各位,但是没用,再问一下在c语言中
    void TV_GetSerial (char far *)和
    void TV_GetSerial (char far *ss)
    这二个有什么区别,c#调用时有什么区别,望指教,不甚感谢。
      

  5.   

    没什么区别,你调用C库时的函数,有什么导出啊,不会是你的DLL本身的问题吧。这样调用非托管代码,我是调用过的,一切都没问题,包括复杂结构的传递,都是可以的。 再试试 (ref str) 参数看看