如何从调用程序访问DLL的变量?

时间:2015-03-25 07:51:27

标签: c# c++ dll unity3d scope

我有一个.dll,我正在尝试使用 Unity3D 。我需要的是两者之间的实时通信所以在DLL中我有一个循环来做一些计算,然后用参数myvalue,0调用以下函数

__declspec(dllexport) double __cdecl MyMathFuncs::Divide(double value, double b)
{
    static int numfound = 0;            
    if(value == -1 && b == -1) //for args -1, -1, this is a...
        return numfound;   // ...GETTER
    else numfound = value ;  // if args are other then -1,-1, this is a SETTER
    return -1;
}

问题在于每次从Unity的Update()函数调用此函数作为getter时,返回零,无论我在其他函数的循环中将其设置为什么。我在Visual Studio中对它进行了测试,并且我得到了预期的输出 - 所以我认为变量的范围或生命周期存在问题。我也尝试声明一个全局变量并访问它,但它的值也是零。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您的方法确实返回

  • 0如果valueb等于-1
  • -1否则。

您确定最后一句话不应该是return numfound(或return value)吗?

设置numfound = value对输出没有任何影响,因为您使用每个方法调用重新初始化numfound。如果你想在方法之外使用它,你需要将它作为一个全局变量。