c#方法不向python返回字符串

c#方法不向python返回字符串,c#,python,C#,Python,我试图使用ctypes模块从python调用c#代码。问题是c#方法正确地返回整数值,但对字符串不这样做。它返回不同的数字而不是字符串。每次运行时,该数字也会发生变化。谁能告诉我这个代码有什么问题吗。我的python代码如下所示: Python代码: import ctypes a = ctypes.cdll.LoadLibrary(r"C:\path\ConsoleApplication1.dll") print a.mul(10,4) print a.add(10,4) print a.st

我试图使用ctypes模块从python调用c#代码。问题是c#方法正确地返回整数值,但对字符串不这样做。它返回不同的数字而不是字符串。每次运行时,该数字也会发生变化。谁能告诉我这个代码有什么问题吗。我的python代码如下所示:

Python代码:

import ctypes
a = ctypes.cdll.LoadLibrary(r"C:\path\ConsoleApplication1.dll")
print a.mul(10,4)
print a.add(10,4)
print a.str()
C#代码:

更改以下代码

 [DllExport("str", CallingConvention = CallingConvention.Cdecl)]
  public static String str()
 {
   String var = "hello";
   return var;

  }


var
c#
中的关键字,不能用作变量名

我怀疑您的问题在于静态关键字:虽然方法不是完全动态的,但给静态方法赋值感觉。。。关我相信还有其他人可以向您详细解释,但我会用以下代码之一替换您的代码:

public string str()
 {
   string _str = "hello";
   return _str;
  }

还请注意@Rajeev提到,您不应该将var用作变量名,因为它是一个保留关键字。它可以用作变量名,但这是一种非常糟糕的做法,例如,它会使代码难以阅读

var var = "hello";
return var;

是有效的,但非常混乱。不要这样做。

嘿,谢谢你的回复。我不能删除static关键字,因为只有static方法可以使用Dllexport导出。关于你们的第二个建议,编译器不允许我告诉无效的表达式项。嘿,谢谢你们的回复。正如您所说,我更改了代码,结果仍然相同。但如果我将返回类型更改为char,它将返回字符的ascii值。因此,在python中,我可以使用chr()函数获取字符。既然string是一个字符数组,我如何转换这段代码,以便在python.C#code:public static char str(){char chr_value='a';return chr_value;}中获得完整的字符串或字符数组Python:print-chr(a.str())Output:a你有没有想过这个问题?我遇到了完全相同的问题。可能是重复的
public string str()
 {
   string _str = "hello";
   return _str;
  }
public static string str = "hello";
var var = "hello";
return var;