C++ 正在JUCE Audio App中初始化AudioDeviceManager

C++ 正在JUCE Audio App中初始化AudioDeviceManager,c++,xcode,juce,C++,Xcode,Juce,我正在尝试在MainContentComponent的构造函数中初始化AudioDeviceManager的实例: MainContentComponent:deviceManager getSharedAudioDeviceManager 在哪里 AudioDeviceManager& getSharedAudioDeviceManager() { if (sharedAudioDeviceManager == nullptr) {

我正在尝试在MainContentComponent的构造函数中初始化AudioDeviceManager的实例:

MainContentComponent:deviceManager getSharedAudioDeviceManager

在哪里

  AudioDeviceManager& getSharedAudioDeviceManager()  
     {  

 if (sharedAudioDeviceManager == nullptr)

    {
        sharedAudioDeviceManager = new AudioDeviceManager();
        sharedAudioDeviceManager->initialise (2, 2, 0, true, String::empty, 0);
    }

    return *sharedAudioDeviceManager;
} 
我的声明是:

AudioDeviceManager和deviceManager; 静态范围指针共享设备管理器

没有编译错误,但我有运行时错误,其中编译器告诉我:

架构x86_64的未定义符号: MainContentComponent::sharedAudioDeviceManager,引用自: MainContentComponent::MainComponent.o中的getSharedAudioDeviceManager ld:未找到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为1使用-v查看调用


完全迷路了。救命啊

您需要在类声明之外定义静态成员,如下所示

ScopedPointer<AudioDeviceManager> MainContentComponent::sharedAudioDeviceManager;

此外,这是一个链接时间错误,不是运行时错误。

感谢您的更正!当我以同样的方式定义它时,它工作了,但没有static关键字,也在MainContentComponent类中。是的,这将工作到,但它也会改变程序的含义。如果这个答案对你有帮助,你能把它标记为接受吗