用P/INVOKE调用一个C++ DLL,其中一个函数是void GetPrivateVersion(int * version1, int * version2);
在C#里面,我是这样:
[DllImport("LASY.dll")]
public static extern void GetPrivateVersion(out Int32 version1, out Int32 version2); public void getVersion(out Int32 version1, out Int32 version2)
{
if (_created == true)
{
ImportDLLClass.GetPrivateVersion(out version1, out version2);
}
}
编译无法通过,错误信息:
The out parameter 'version1' must be assigned to before control leaves the current method
The out parameter 'version2' must be assigned to before control leaves the current method
应该怎么处理?
在C#里面,我是这样:
[DllImport("LASY.dll")]
public static extern void GetPrivateVersion(out Int32 version1, out Int32 version2); public void getVersion(out Int32 version1, out Int32 version2)
{
if (_created == true)
{
ImportDLLClass.GetPrivateVersion(out version1, out version2);
}
}
编译无法通过,错误信息:
The out parameter 'version1' must be assigned to before control leaves the current method
The out parameter 'version2' must be assigned to before control leaves the current method
应该怎么处理?
public void getVersion(out Int32 version1, out Int32 version2)
{
if (_created == false)
{
version1 = -1;
version2 = -1;
return;
} ImportDLLClass.GetPrivateVersion(out version1, out version2);
}来个朋友回复一下吧,我把分数给出
*int IntPtr
out保证每一个传出变量都必须被赋值
public void getVersion(out Int32 version1, out Int32 version2)
{
ImportDLLClass.GetPrivateVersion(out version1, out version2);
}
凡是加out的,方法返回之前一定要赋值