【发布时间】:2018-03-06 16:30:27
【问题描述】:
我在头文件中声明了一个静态变量,并在相应的 cpp 文件中进行了初始化。我想要做的是从另一个 cpp 文件访问该变量。这是代码:
AkOcclusionObstructionService.h
class AkOcclusionObstructionService
{
public:
static float OcclusionFadeRate;
...
}
AkOcclusionObstructionService.cpp
...
float AkOcclusionObstructionService::OcclusionFadeRate = 3.0f;
...
MyBlueprintFunctionLibrary.cpp
#include "MyBlueprintFunctionLibrary.h"
#include "AkOcclusionObstructionService.h"
void UMyBlueprintFunctionLibrary::ChangeWwiseFadeRate(float rate)
{
AkOcclusionObstructionService::OcclusionFadeRate = rate;
}
当我尝试构建 Visual Studio 时出现此错误:
“LNK2001 未解析的外部符号“public: static float AkOcclusionObstructionService::OcclusionFadeRate”(?OcclusionFadeRate@AkOcclusionObstructionService@@2MA)。
看起来 MyBlueprintFunctionLibrary 在 AkOcclusionObstructionService cpp 文件中看不到 OcclusionFadeRate 变量。
有人知道发生了什么吗?
提前致谢!
编辑:附加链接/构建信息:
为了使“AkOcclusionObstructionService.h”文件对“MyBlueprintFunctionLibrary.cpp”文件可见,我们必须向“TestFadeRateWwise2.build”添加一些内容。 cs”(TestFadeRateWwise2 是项目名称)。 具体来说,我们必须在这一行添加“AKAUDIO”:
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "HeadMountedDisplay", "AKAUDIO" });
这是我们做的唯一“非标准”的事情。
【问题讨论】:
-
你展示的代码中没有任何东西本质上是错误的,所以错误一定出在你没有展示的代码或你编译它的方式上。
-
这不是代码而是构建问题。您如何构建(或在您的案例中链接)您的代码?
标签: c++ static unreal-engine4