请问一个关于C#调用非托管函数后返回值的读取有关问题

请教一个关于C#调用非托管函数后返回值的读取问题
非托管的函数定义如下:
extern "C"
{
long _declspec(dllexport) Check(char* number)
{
  return 1;
}
}
C#中对该函数的定义如下:
[DllImport("Check.dll")]
public static extern long Check(string number);

然后在C#中执行Check()函数后,获得的返回值始终不是1,是不是在C#中返回值的定义还是用MarshAs之类的?

------解决方案--------------------
你返回的是什么值?是不是一个固定值啊。把public static extern long Check(string number); 
改成public static extern int Check(byte[] number); 看看

------解决方案--------------------
long ---> int