hilch / brwatch

brwatch: service tool for B&R plc: watch, change, log variables, set ip adresses etc.
GNU General Public License v3.0
31 stars 4 forks source link

Linking error - collect2.exe: error: ld returned 1 exit status #6

Closed KoenWindey closed 1 year ago

KoenWindey commented 1 year ago

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:\BRWATC~1\RESOUR~1\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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofg_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 ofmylistviewparam'; 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 ofg_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 ofg_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 ofmytreeviewparam'; 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 ofmylistviewparam'; 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 ofg_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 ofg_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 ofpvi_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 ofg_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 ofg_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 ofpvi_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 ofg_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 ofg_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 ofpvi_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 ofg_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 ofg_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 ofpvi_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 ofg_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 ofg_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))

hilch commented 1 year ago

Hi Koen, it's a question of what GCC toolchain is used. I used a 32-Bit WinXP VM and therefore native 32-Bit toolchain. Using a new Windows would require setting up cross compile settings in code::blocks which is very annoying since there are many versions of mingw available that not always provide compatible 32-Bit libs.

KoenWindey commented 1 year ago

Thanks!

I'll try to do the same in a Windows XP VM - I'll let you know.

hilch commented 1 year ago

@KoenWindey : I lost a lot of time installing different version of code::blocks. I changed over to Dev-C++ from Embarcadero now. They are able to bundle a working toolchain for 32Bit. Could get it run on Win10/64

KoenWindey commented 1 year ago

Genius! Thank you for updating also the project file for download - saves me figuring out how to convert the cbp project to a devC project.

Much appreciated.

Note: To anyone trying, best to install DevC in a folder without brackets. The default location in Windows 11 is 'C:\Program Files (x86)". However the 'Clean' command fails on the round brackets in the path. If you install under 'C:\DevC' for example, there is no issue. This seems to be a bug with DevC DEL command.

hilch commented 1 year ago

@KoenWindey Thanks for feedback !

  1. I put your hints into readme.md.
  2. It has become more and more difficult to use an .exe in bigger companies due to security regulations. Have you ever thought about using Python instead ? (https://github.com/hilch/Pvi.py)
  3. with makefile and pre-installed Dev C++ it should be possible to use other IDEs as well (Code::blocks, Visual Studio Code etc.)
KoenWindey commented 1 year ago

@hilch I am starting to realise that I don't have nearly enough knowledge of C or time to make a fork with MQTT publishing. I was wondering if you'd be interested in helping out - I have a budget and can pay a nominal fee? Keeping things open-source not a problem.

All I've done so far is put a scope of work together.

hilch commented 1 year ago

@KoenWindey unfortunately I am very busy the next time. To be honest, C is not the most suitable and modern language either, unless you are forced to use it. I wouldn't start brwatch in C nowadays either, but CPP, because it's just clearer. If open source is not necessarily a problem, then think about switching to Python. There are many Python MQTT client libraries around and with mosquitto you can easily set up a server. This will get you to your goal much faster.