hilch / brwatch Goto Github PK
View Code? Open in Web Editor NEWbrwatch: service tool for B&R plc: watch, change, log variables, set ip adresses etc.
License: GNU General Public License v3.0
brwatch: service tool for B&R plc: watch, change, log variables, set ip adresses etc.
License: GNU General Public License v3.0
I understand it works only on Windows.I have Nvdia nanojetson with ubuntu installed and I am trying to connect to B&R PLC.Can this help?
Hi Christoph,
I had another go at compiling from source, since I'd like to create a fork that allows to not just log data, but also publish to MQTT. I like that this project is just 'old C', which should run on a lot of older 32-bit systems as well.
I installed Codeblocks 32-bit (v20.03) and am using TDM-GCC-32 (https://wiki.codeblocks.org/index.php/MinGW_installation) to compile. A little 'helloworld.c' compiles and runs fine.
I download the full git repository and edit the cbp file to refer to the gcc compiler rather than 'mingw32' so as to refer to the above mentioned tdm-gcc-32 (which has mingw32).
On compilation I get the debug log below. It says linker error, but the warnings are all to do with mutliple definitions. Do you think these warnings may be causing the issue and how i could resolve these?
What is the latest version of codeblocks and mingw32 you are using for this project?
I installed Automation NET PVI v4.3 on my pc as well - not sure if that was needed or not for purpose of compilation?
Thank you
Koen
`-------------- Build: Debug in brwatch (compiler: GNU GCC Compiler)---------------
windres.exe -Iresources -J rc -O coff -i C:\BRWATC1\RESOUR1\main.rc -o obj\Debug\resources\main.res
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\cpusearch.c -o obj\Debug\src\cpusearch.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\dlg_about.c -o obj\Debug\src\dlg_about.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\dlg_busy.c -o obj\Debug\src\dlg_busy.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\dlg_editcpu.c -o obj\Debug\src\dlg_editcpu.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\dlg_edittask.c -o obj\Debug\src\dlg_edittask.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\dlg_showpviobjects.c -o obj\Debug\src\dlg_showpviobjects.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\dlg_writepvar.c -o obj\Debug\src\dlg_writepvar.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\logger.c -o obj\Debug\src\logger.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\main.c -o obj\Debug\src\main.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\mylistview.c -o obj\Debug\src\mylistview.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\mytreeview.c -o obj\Debug\src\mytreeview.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\pvi_interface.c -o obj\Debug\src\pvi_interface.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\resource.c -o obj\Debug\src\resource.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\settings.c -o obj\Debug\src\settings.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\stringtools.c -o obj\Debug\src\stringtools.o
mingw32-gcc.exe -Wall -g -D_DEBUG -Iinclude -Iinclude -c C:\brwatch-master\src\zip.c -o obj\Debug\src\zip.o
mingw32-gcc.exe -Llibraries -Llibraries -o bin\Debug\brwatch.exe obj\Debug\src\cpusearch.o obj\Debug\src\dlg_about.o obj\Debug\src\dlg_busy.o obj\Debug\src\dlg_editcpu.o obj\Debug\src\dlg_edittask.o obj\Debug\src\dlg_showpviobjects.o obj\Debug\src\dlg_writepvar.o obj\Debug\src\logger.o obj\Debug\src\main.o obj\Debug\src\mylistview.o obj\Debug\src\mytreeview.o obj\Debug\src\pvi_interface.o obj\Debug\src\resource.o obj\Debug\src\settings.o obj\Debug\src\stringtools.o obj\Debug\src\zip.o obj\Debug\resources\main.res libraries\PviCom.lib -lgdi32 -luser32 -lkernel32 -lcomctl32 libraries\libnetapi32.a libraries\libwsock32.a libraries\libcomdlg32.a libraries\libiphlpapi.a libraries\libz.a
C:\brwatch-master\src\dlg_editcpu.c: In function 'DlgProc':
C:\brwatch-master\src\dlg_editcpu.c:25:41: warning: '%s' directive writing up to 255 bytes into a region of size between 214 and 254 [-Wformat-overflow=]
25 | sprintf( tempstring, "%s %s %s", object->ex.cpu.cputype, object->ex.cpu.arversion, object->descriptor );
| ^~
C:\brwatch-master\src\dlg_editcpu.c:25:13: note: 'sprintf' output between 3 and 298 bytes into a destination of size 256
25 | sprintf( tempstring, "%s %s %s", object->ex.cpu.cputype, object->ex.cpu.arversion, object->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\dlg_writepvar.c: In function 'DlgProc':
C:\brwatch-master\src\dlg_writepvar.c:219:45: warning: '%s' directive writing up to 255 bytes into a region of size between 214 and 254 [-Wformat-overflow=]
219 | sprintf( tempstring, "%s %s %s", o->ex.cpu.cputype, o->ex.cpu.arversion, o->descriptor );
| ^~
C:\brwatch-master\src\dlg_writepvar.c:219:17: note: 'sprintf' output between 3 and 298 bytes into a destination of size 256
219 | sprintf( tempstring, "%s %s %s", o->ex.cpu.cputype, o->ex.cpu.arversion, o->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\logger.c: In function 'LoggerConfigDlgProc':
C:\brwatch-master\src\logger.c:1033:41: warning: '%s' directive writing up to 255 bytes into a region of size between 214 and 254 [-Wformat-overflow=]
1033 | sprintf( tempstring, "%s %s %s", cpu_timemaster->ex.cpu.cputype, cpu_timemaster->ex.cpu.arversion, cpu_timemaster->descriptor );
| ^~
C:\brwatch-master\src\logger.c:1033:13: note: 'sprintf' output between 3 and 298 bytes into a destination of size 256
1033 | sprintf( tempstring, "%s %s %s", cpu_timemaster->ex.cpu.cputype, cpu_timemaster->ex.cpu.arversion, cpu_timemaster->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\brwatch-master\src\main.c:4:
C:/TDM-GCC-32/include/winbase.h: In function 'WinMain':
include/main.h:27:27: warning: '. instance}' directive writing 11 bytes into a region of size between 1 and 10 [-Wformat-overflow=]
27 | #define APPLICATION_NAME "BRWATCH"
| ^~~~~~~~~
C:\brwatch-master\src\main.c:122:26: note: in expansion of macro 'APPLICATION_NAME'
122 | sprintf( windowname, APPLICATION_NAME " {%u. instance}", instance_counter );
| ^~~~~~~~~~~~~~~~
C:\brwatch-master\src\main.c:122:58: note: format string is defined here
122 | sprintf( windowname, APPLICATION_NAME " {%u. instance}", instance_counter );
| ~~~~~~~~~~^
C:\brwatch-master\src\main.c:122:5: note: 'sprintf' output between 22 and 31 bytes into a destination of size 20
122 | sprintf( windowname, APPLICATION_NAME " {%u. instance}", instance_counter );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mylistview.c: In function 'MyListViewInsertPVIObjects':
C:\brwatch-master\src\mylistview.c:262:41: warning: '%s' directive writing up to 255 bytes into a region of size between 214 and 254 [-Wformat-overflow=]
262 | sprintf( tempstring, "%s %s %s", object->ex.cpu.cputype, object->ex.cpu.arversion, object->descriptor );
| ^~
C:\brwatch-master\src\mylistview.c:262:13: note: 'sprintf' output between 3 and 298 bytes into a destination of size 256
262 | sprintf( tempstring, "%s %s %s", object->ex.cpu.cputype, object->ex.cpu.arversion, object->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\settings.c: In function 'SettingsInitialize':
C:\brwatch-master\src\settings.c:46:81: warning: '%s' directive writing up to 259 bytes into a region of size 227 [-Wformat-overflow=]
46 | sprintf( tempstring, "The settings were not found.\n%s\nwas created !", inifile );
| ^~ ~~~~~~~
C:\brwatch-master\src\settings.c:46:29: note: 'sprintf' output between 44 and 303 bytes into a destination of size 256
46 | sprintf( tempstring, "The settings were not found.\n%s\nwas created !", inifile );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\settings.c:73:60: warning: '%s' directive writing up to 255 bytes into a region of size 228 [-Wformat-overflow=]
73 | sprintf( tempstring, "Error creating *.ini file !\n%s", errorMessage );
| ^~ ~~~~~~~~~~~~
C:\brwatch-master\src\settings.c:73:9: note: 'sprintf' output between 29 and 284 bytes into a destination of size 256
73 | sprintf( tempstring, "Error creating *.ini file !\n%s", errorMessage );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\zip.c: In function 'DecompressFile':
C:\brwatch-master\src\zip.c:201:30: warning: '%s' directive writing up to 259 bytes into a region of size between 258 and 260 [-Wformat-overflow=]
201 | sprintf( outfilename, "%s%s%s", drive, directory, filename );
| ^~ ~~~~~~~~~
C:\brwatch-master\src\zip.c:201:5: note: 'sprintf' output between 1 and 521 bytes into a destination of size 260
201 | sprintf( outfilename, "%s%s%s", drive, directory, filename );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c: In function 'MyTreeViewRClick':
C:\brwatch-master\src\mytreeview.c:398:13: warning: assignment to 'LPRECT' {aka 'struct tagRECT *'} from incompatible pointer type 'HTREEITEM' {aka 'struct _TREEITEM *'} [-Wincompatible-pointer-types]
398 | if( TreeView_GetItemRect( mytreeviewparam.hwndTV, hti, lprect_item, TRUE ) )
| ^~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c: In function 'TreeViewInsertChildObjects':
C:\brwatch-master\src\mytreeview.c:258:45: warning: ' :' directive writing 4 bytes into a region of size between 1 and 256 [-Wformat-overflow=]
258 | sprintf( tempstring, "%s :%s[%u]",parent->descriptor, parent->ex.pv.pdatatype, parent->ex.pv.dimension );
| ^~~~
C:\brwatch-master\src\mytreeview.c:258:42: note: using the range [0, 4294967295] for directive argument
258 | sprintf( tempstring, "%s :%s[%u]",parent->descriptor, parent->ex.pv.pdatatype, parent->ex.pv.dimension );
| ^~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c:258:21: note: 'sprintf' output 8 or more bytes (assuming 263) into a destination of size 256
C:\brwatch-master\src\pvi_interface.c: In function 'CreateUniqueObjectName':
C:\brwatch-master\src\pvi_interface.c:204:23: warning: implicit declaration of function 'toupper' [-Wimplicit-function-declaration]
204 | *name++ = toupper(*descriptor++);
| ^~~~~~~
C:\brwatch-master\src\pvi_interface.c: In function 'ReadSettings':
C:\brwatch-master\src\pvi_interface.c:147:52: warning: '%s' directive writing up to 255 bytes into a region of size 238 [-Wformat-overflow=]
147 | sprintf(devicename, "@Pvi/LNBRWATCH/DEV%s", tempstring);
| ^~ ~~~~~~~~~~
C:\brwatch-master\src\pvi_interface.c:147:13: note: 'sprintf' output between 19 and 274 bytes into a destination of size 256
147 | sprintf(devicename, "@Pvi/LNBRWATCH/DEV%s", tempstring);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\pvi_interface.c: In function 'AddPviObject':
C:\brwatch-master\src\pvi_interface.c:304:59: warning: '%s' directive writing up to 255 bytes into a region of size 232 [-Wformat-overflow=]
304 | sprintf(tempstring, "AddPviObject:PviCreate "%s"", tempobject->name);
| ^~
C:\brwatch-master\src\pvi_interface.c:304:13: note: 'sprintf' output between 26 and 281 bytes into a destination of size 256
304 | sprintf(tempstring, "AddPviObject:PviCreate "%s"", tempobject->name);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\pvi_interface.c: In function 'PviReadCPUList':
C:\brwatch-master\src\pvi_interface.c:1541:48: warning: '%s' directive writing up to 255 bytes into a region of size 252 [-Wformat-overflow=]
1541 | sprintf( descriptor, "CD="%s"", cpuobject->descriptor );
| ^~
C:\brwatch-master\src\pvi_interface.c:1541:21: note: 'sprintf' output between 6 and 261 bytes into a destination of size 256
1541 | sprintf( descriptor, "CD="%s"", cpuobject->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\pvi_interface.c:1483:40: warning: '%s' directive writing up to 255 bytes into a region of size 252 [-Wformat-overflow=]
1483 | sprintf( descriptor, "CD="%s"", cpuobject->descriptor );
| ^~
C:\brwatch-master\src\pvi_interface.c:1483:13: note: 'sprintf' output between 6 and 261 bytes into a destination of size 256
1483 | sprintf( descriptor, "CD="%s"", cpuobject->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
258 | sprintf( tempstring, "%s :%s[%u]",parent->descriptor, parent->ex.pv.pdatatype, parent->ex.pv.dimension );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c:246:45: warning: ' :' directive writing 4 bytes into a region of size between 1 and 256 [-Wformat-overflow=]
246 | sprintf( tempstring, "%s :%s",parent->descriptor, parent->ex.pv.pdatatype );
| ^~~~
C:\brwatch-master\src\mytreeview.c:246:21: note: 'sprintf' output 5 or more bytes (assuming 260) into a destination of size 256
246 | sprintf( tempstring, "%s :%s",parent->descriptor, parent->ex.pv.pdatatype );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c:242:45: warning: ' :' directive writing 4 bytes into a region of size between 1 and 256 [-Wformat-overflow=]
242 | sprintf( tempstring, "%s :%s[%u]",parent->descriptor, parent->ex.pv.pdatatype, parent->ex.pv.dimension );
| ^~~~
C:\brwatch-master\src\mytreeview.c:242:42: note: using the range [0, 4294967295] for directive argument
242 | sprintf( tempstring, "%s :%s[%u]",parent->descriptor, parent->ex.pv.pdatatype, parent->ex.pv.dimension );
| ^~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c:242:21: note: 'sprintf' output 8 or more bytes (assuming 263) into a destination of size 256
242 | sprintf( tempstring, "%s :%s[%u]",parent->descriptor, parent->ex.pv.pdatatype, parent->ex.pv.dimension );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c:228:41: warning: '%s' directive writing up to 255 bytes into a region of size between 214 and 254 [-Wformat-overflow=]
228 | sprintf( tempstring, "%s %s %s", parent->ex.cpu.cputype, parent->ex.cpu.arversion, parent->descriptor );
| ^~
C:\brwatch-master\src\mytreeview.c:228:13: note: 'sprintf' output between 3 and 298 bytes into a destination of size 256
228 | sprintf( tempstring, "%s %s %s", parent->ex.cpu.cputype, parent->ex.cpu.arversion, parent->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\brwatch-master\src\mytreeview.c:287:45: warning: '%s' directive writing up to 255 bytes into a region of size between 214 and 254 [-Wformat-overflow=]
287 | sprintf( tempstring, "%s %s %s", child->ex.cpu.cputype, child->ex.cpu.arversion, child->descriptor );
| ^~
C:\brwatch-master\src\mytreeview.c:287:17: note: 'sprintf' output between 3 and 298 bytes into a destination of size 256
287 | sprintf( tempstring, "%s %s %s", child->ex.cpu.cputype, child->ex.cpu.arversion, child->descriptor );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_about.o:dlg_about.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_about.o:dlg_about.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_about.o:dlg_about.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_about.o:dlg_about.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_about.o:dlg_about.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_about.o:dlg_about.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_editcpu.o:dlg_editcpu.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_editcpu.o:dlg_editcpu.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_editcpu.o:dlg_editcpu.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_editcpu.o:dlg_editcpu.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_editcpu.o:dlg_editcpu.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_editcpu.o:dlg_editcpu.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_edittask.o:dlg_edittask.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_edittask.o:dlg_edittask.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_edittask.o:dlg_edittask.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_edittask.o:dlg_edittask.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_edittask.o:dlg_edittask.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_edittask.o:dlg_edittask.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_showpviobjects.o:dlg_showpviobjects.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_showpviobjects.o:dlg_showpviobjects.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_showpviobjects.o:dlg_showpviobjects.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_showpviobjects.o:dlg_showpviobjects.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_showpviobjects.o:dlg_showpviobjects.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_showpviobjects.o:dlg_showpviobjects.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_writepvar.o:dlg_writepvar.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_writepvar.o:dlg_writepvar.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_writepvar.o:dlg_writepvar.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_writepvar.o:dlg_writepvar.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_writepvar.o:dlg_writepvar.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\dlg_writepvar.o:dlg_writepvar.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\logger.o:logger.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\logger.o:logger.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\logger.o:logger.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\logger.o:logger.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\logger.o:logger.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\logger.o:logger.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\main.o:main.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\main.o:main.c:(.bss+0xc): multiple definition of
g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\main.o:main.c:(.bss+0x10): multiple definition of g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\main.o:main.c:(.bss+0x14): multiple definition of
g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\main.o:main.c:(.bss+0x18): multiple definition of g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\main.o:main.c:(.bss+0x20): multiple definition of
g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0x0): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0x20): multiple definition of
mylistviewparam'; obj\Debug\src\main.o:main.c:(.bss+0x80): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0x90): multiple definition of g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0x94): multiple definition of
g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0x98): multiple definition of g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0x9c): multiple definition of
g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mylistview.o:mylistview.c:(.bss+0xa0): multiple definition of g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0x0): multiple definition of
mytreeviewparam'; obj\Debug\src\main.o:main.c:(.bss+0x54): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0x1c): multiple definition of pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0x40): multiple definition of
mylistviewparam'; obj\Debug\src\main.o:main.c:(.bss+0x80): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0xb0): multiple definition of g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0xb4): multiple definition of
g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0xb8): multiple definition of g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0xbc): multiple definition of
g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\mytreeview.o:mytreeview.c:(.bss+0xc0): multiple definition of g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\pvi_interface.o:pvi_interface.c:(.bss+0x0): multiple definition of
pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\pvi_interface.o:pvi_interface.c:(.bss+0xc): multiple definition of g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\pvi_interface.o:pvi_interface.c:(.bss+0x10): multiple definition of
g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\pvi_interface.o:pvi_interface.c:(.bss+0x14): multiple definition of g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\pvi_interface.o:pvi_interface.c:(.bss+0x18): multiple definition of
g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\pvi_interface.o:pvi_interface.c:(.bss+0x20): multiple definition of g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\resource.o:resource.c:(.bss+0x0): multiple definition of
pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\resource.o:resource.c:(.bss+0xc): multiple definition of g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\resource.o:resource.c:(.bss+0x10): multiple definition of
g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\resource.o:resource.c:(.bss+0x14): multiple definition of g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\resource.o:resource.c:(.bss+0x18): multiple definition of
g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\resource.o:resource.c:(.bss+0x20): multiple definition of g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\settings.o:settings.c:(.bss+0x0): multiple definition of
pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\settings.o:settings.c:(.bss+0xc): multiple definition of g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\settings.o:settings.c:(.bss+0x10): multiple definition of
g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\settings.o:settings.c:(.bss+0x14): multiple definition of g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\settings.o:settings.c:(.bss+0x18): multiple definition of
g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\settings.o:settings.c:(.bss+0x20): multiple definition of g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\zip.o:zip.c:(.bss+0x0): multiple definition of
pvi_interface_notify'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x0): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\zip.o:zip.c:(.bss+0xc): multiple definition of g_hwndMainWindow'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0xc): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\zip.o:zip.c:(.bss+0x10): multiple definition of
g_hInstance'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x10): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\zip.o:zip.c:(.bss+0x14): multiple definition of g_draggedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x14): first defined here C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\zip.o:zip.c:(.bss+0x18): multiple definition of
g_selectedPVIObject'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x18): first defined here
C:/TDM-GCC-32/bin/../lib/gcc/mingw32/10.3.0/../../../../mingw32/bin/ld.exe: obj\Debug\src\zip.o:zip.c:(.bss+0x20): multiple definition of g_PVIVersionString'; obj\Debug\src\cpusearch.o:cpusearch.c:(.bss+0x20): first defined here collect2.exe: error: ld returned 1 exit status Process terminated with status 1 (0 minute(s), 1 second(s)) 1 error(s), 19 warning(s) (0 minute(s), 1 second(s))
Hi,
When trying to compile in Code Blocks, it throws an error that it can't find crtdbg.h
A bit of googling tells me that is an issue when compiling with minGW, which is what you suggested.
I'm only new to this - but, any suggestions?
Perhaps an exe file to save me the hastle? :-)
Thank you
K
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.