Rewirte GUI using JUCE for a VST GUI of a plugin

I’m a student and new for JUCE as well as VST.
My supervisor told me to wirte a user interface for a exsiting VST audio plugin. It has had a rough UI for it but using VSTGUI.
What i need to do is to rewrite the GUI using JUCE.
I’m quite confused about what to do first.

I tried to delete all the VSTGUI files and the related codes in the exsiting project and added “juce_amalganmated.cpp/h” and “juce_VST_Wrapper.cpp” as follow of the tutorial in the juce folder.
Then I can complied it successfully but cannot build it in Visual Studio 2010. It said “[quote]dllmain.obj : error LNK2005: _DllMain@12 already defined in juce_VST_Wrapper.obj[/quote]” and “[quote]juce_VST_Wrapper.obj : error LNK2019: unresolved external symbol “class juce::AudioProcessor * __stdcall createPluginFilter(void)” (?createPluginFilter@@YGPAVAudioProcessor@juce@@XZ) referenced in function “struct AEffect * __cdecl `anonymous namespace’::pluginEntryPoint(int (__cdecl*)(struct AEffect *,int,int,int,void *,float))” (?pluginEntryPoint@?A0xfe9c45c5@@YAPAUAEffect@@P6AHPAU2@HHHPAXM@Z@Z)[/quote]”

I think it maybe because of some conflicted places or some same configurations. But I am not sure and have no idea what to do.

Hope I explain the problem clearly…

And Thank you for every one.


The Juce VST wrapper relies on your plugin being derived from AudioProcessor. Since it is only one file which doesn’t know how you called your AudioProcessor class (or where it might be), it has an external function that has to be defined along with your AudioProcessor and returns a new object.

A Windows VST has a dll main function. This is defined in the vst wrapper as well as in the remains of your original plugin, resulting in the linker conflict.

Probably the easiest way is to put your current plugin inside an AudioProcessor. This should be mainly the processing, parameters, presets and chunk saving/loading.
To get started you can generate a plugin with the Introjucer (found in juce/extras) and have a look what it does.


If you’re new to all this, you’re going to have a hard time setting up a project manually. The smart approach is definitely just to use the introjucer to generate all your project files correctly.