I hope too, thanks for your reactivity
Missing JUCE_API
Hi !
It seems that JUCE_API is missing on class WindowsRegistry definition
in /modules/juce_core/misc/juce_WindowsRegistry.h file.
Thanks in advance for this change.
Hi !
It seems that JUCE_API is missing on the two internal class Listener of class MPEInstrument and MPEZoneLayout
Respectivelly in
modules\juce_audio_basics\mpe\juce_MPEInstrument.h line 233
and
modules\juce_audio_basics\mpe\juce_MPEZoneLayout.h at line 132
Thanks in advance for this change.
Thanks. (I'll actually make them inline rather than adding the export definition, but that should also work)
Unfortunately, with your last fix, Visual Studio is still complaining when a JUCE_API class intheriting from a non JUCE_API interface.
Inlined or not.
warning C4275: non dll-interface class 'juce::MPEInstrument::Listener' used as base for dll-interface struct 'juce::MPESynthesiserBase'
I think JUCE_API must be set. As your twelve other Listner class does.
Thanks again for your reactivity.
We actually have many Listener classes that don't use the flag, so I did it like this to match those.
Not sure why VS has a problem with this, the code is perfectly legit, but <sigh> will add the flag...
I understand your disappointment about this ugly dllexport syntax...
Listener who must avoid JUCE_API are template based.
Non template Listener without JUCE_API are without warning when inherited only by non JUCE_API internal Juce class.
Thanks again for this !
Hi !
I just found some extra missing JUCE_API in OpenGL module:
This will allow OpenGLAppExample to link with Juce build in DLL.
in juce_OpenGLAppComponent.h line 37 for the OpenGLAppComponent class.
in juce_OpenGLShaderProgram line 128 for the OpenGLShaderProgram::Uniform struct
in juce_OpenGLShaderProgram line 173 for the OpenGLShaderProgram::Attribute struct.
Thanks in advance for this.
Hi !
Add JUCE_API to RelativeTime’s global operators would be welcome !
Thanks in advance for this !
…umm, hang on, static methods like that don’t need the JUCE_API flag. Do you mean JUCE_CALLTYPE?
In fact you are right, for proper Windows DLL build we need both of them,
Like it was already done for juce::String ones.
Thanks a lot for your incredible reactivity.
No… the functions in String.h are free functions, not methods like the RelativeTime ones.
IIRC JUCE_CALLTYPE is actually only needed for RTAS builds on Windows, so unnecessary here. And JUCE_API is already applied to the RelativeTime class itself, so isn’t needed on its static methods.
What problems are you actually seeing to have asked this question?
ok, sorry, just realised that you’re talking about the operators, I assumed you meant the static methods… Doh. OK, will sort that out!
Thanks for this Quick fix !
Sorry to do not sending you all of the following missing JUCE_API in one shot:
Here another related change:
in juce_ModalComponentManager.h class Callback inside ModalComponentManager line 52 should also benefit from JUCE_API.
Those ones are still missing:
in juce_OpenGLAppComponent.h line 37 for the OpenGLAppComponent class.
in juce_OpenGLShaderProgram line 128 for the OpenGLShaderProgram::Uniform struct
in juce_OpenGLShaderProgram line 173 for the OpenGLShaderProgram::Attribute struct.
Thanks in advance for all of this.
Hi !
I discover two missing JUCE_API for Windows DLL build in
juce_core/network/juce_URL.h
line 352: class JUCE_API DownloadTask
and line 356: struct JUCE_API Listener
Many thanks in advance for those fixes
All the best