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

How to access a DLL's variable from the calling program?

我有一个 .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 调用时,它 returns 零 ,无论是什么我已经将它设置在另一个函数的循环中。我在 Visual Studio 中对其进行了测试,并且在那里得到了预期的输出 - 所以我认为 范围或变量的生命周期 存在问题。我还尝试声明一个全局变量并访问它,但它的值也为零。我该如何解决这个问题?

你的方法 return

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

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

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