user51708: By including
 #include <BlynkSimpleEsp8266.h>

Blynk library (https://github.com/blynkkk/blynk-library) from more than 1 module/cpp file, "Multiple definition of `Blynk’" error is thrown at compile time. The header file contains following:
static WiFiClient _blynkWifiClient;
static BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport);

How can I get the Blynk declarations into a second or third module, without multiple definitions error? Editing the header/library file/s is not an option!
By the question in How to create global variables/includes/functions for use in multiple source files it is still not clear what a working solution is...

user37622: The Blynk "simple" header files are not ready to be included into multiple cpp files. They are meant to be included only in the main ino file. The reason is that the variable allocations are in headers file, which is bad practice for  C and C++. The h files should contain only declarations. The right way would have
extern BlynkWifi Blynk;

and the lines which are now in the h file should go in a cpp file. Then every cpp file that includes the .h will know about the variables but the variables would be allocated only once.
The fix is to change the library or to copy the BlynkSimpleEsp8266.h include to your project as for example MyBlynk.h and change the Blynk variable in MyBlynk.h to extern and add a MyBlynk.cpp file with variables allocation
#include "MyBlynk.h"

WiFiClient _blynkWifiClient;
BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport);


51708: <p>By including</p>

<pre><code> #include &lt;BlynkSimpleEsp8266.h&gt;
</code></pre>

<p>Blynk library (<a href="https://github.com/blynkkk/blynk-library" rel="nofollow noreferrer">https://github.com/blynkkk/blynk-library</a>) from more than 1 module/cpp file, "Multiple definition of `Blynk’" error is thrown at compile time. The header file contains following:</p>

<pre><code>static WiFiClient _blynkWifiClient;
static BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport);
</code></pre>

<p>How can I get the Blynk declarations into a second or third module, without multiple definitions error? Editing the header/library file/s is not an option!</p>

<p>By the question in <a href="https://stackoverflow.com/questions/48392571">How to create global variables/includes/functions for use in multiple source files</a> it is still not clear what a working solution is...</p>
 37622: <p>The Blynk "simple" header files are not ready to be included into multiple cpp files. They are meant to be included only in the main ino file. The reason is that the variable allocations are in headers file, which is bad practice for  C and C++. The h files should contain only declarations. The right way would have</p>

<pre><code>extern BlynkWifi Blynk;
</code></pre>

<p>and the lines which are now in the h file should go in a cpp file. Then every cpp file that includes the .h will know about the variables but the variables would be allocated only once.</p>

<p>The fix is to change the library or to copy the BlynkSimpleEsp8266.h include to your project as for example MyBlynk.h and change the Blynk variable in MyBlynk.h to <code>extern</code> and add a MyBlynk.cpp file with variables allocation</p>

<pre><code>#include "MyBlynk.h"

WiFiClient _blynkWifiClient;
BlynkArduinoClient _blynkTransport(_blynkWifiClient);
BlynkWifi Blynk(_blynkTransport);
</code></pre>
