如何从调用程序访问 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
如果 value
和 b
等于 -1
-1
否则。
您确定最后一条语句不应该是 return numfound
(或 return value
)吗?
设置 numfound = value
对输出没有任何影响,因为您在每次方法调用时都重新初始化 numfound
。如果你想在方法之外使用它,你需要将它设为全局变量是对的。
我有一个 .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
如果value
和b
等于-1
-1
否则。
您确定最后一条语句不应该是 return numfound
(或 return value
)吗?
设置 numfound = value
对输出没有任何影响,因为您在每次方法调用时都重新初始化 numfound
。如果你想在方法之外使用它,你需要将它设为全局变量是对的。