Hello everyone,
I am very new to Nim: I accidentally stumbled upon it across Reddit, and it intrigued me. I want to give it a try!
Forgive me if I'm forgetting something important, but I have not been able to get a demo for two different libraries up and running: both give me linker errors, in this fashion:
libui: ld.exe: C:/Users/user/nimcache/helloworld_r/@m..@suing.nim.c.o:@m..@suing.nim.c:(.text+0x105f): undefined reference to 'uiUninit'
wxnim: ld.exe: C:/wxWidgets-3.2.2.1/lib/gcc_lib/libwxmsw32u_core.a(corelib_dc.o):dc.cpp:(.text+0x36b3): undefined reference to '__imp_GetDeviceCaps'
For libui (because it's the easiest of the two to setup), I've tried the following commands in the 'examples' folder:
nim c helloworld.nim
nim cpp helloworld.nim
wxnim is kind enough to list the command to compile the demo, but that fails with the linker error(s) I've listed above:
nim cpp -r example2.nim
I've tried GCC 12.2 from winlibs, TDM-GCC, and also the compiler that is offered on the download page of Nim. I'm building on Windows 10, using Nim 1.6.10
Does anyone know what I am doing wrong? The compiler spits out the command that's used for GCC, and that does include the linker options, at least for wxnim. I followed the instructions listed on Github, for both libui and wxnim:
g++.exe -o C:\nim\projects\wx-widgets\main.exe C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@sstd@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@[email protected] C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@sstd@sprivate@swin_setenv.nim.cpp.o C:\Users\user\nimcache\main_d\@mC@c@[email protected]@slib@[email protected] C:\Users\user\nimcache\main_d\@m..@s..@slibraries@swxnim@[email protected] C:\Users\user\nimcache\main_d\@mmain.nim.cpp.o -lkernel32 -luser32 -lgdi32 -lcomdlg32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lole32 -loleaut32 -luuid -lrpcrt4 -ladvapi32 -lwsock32 "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_adv.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_aui.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_core.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_gl.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_html.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_media.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_propgrid.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_ribbon.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_richtext.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_stc.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_webview.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxmsw32u_xrc.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxbase32u.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxbase32u_net.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxbase32u_xml.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxexpat.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxjpeg.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxpng.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxregexu.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxscintilla.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxtiff.a" "C:\wxWidgets-3.2.2.1\lib\gcc_lib\libwxzlib.a
For the libui errors, were you using uing? If so, can you submit an issue on GitHub? Linking errors are often caused by the library.
In addition, a pastebin with all of the errors would be nice.
Yes, I am using uing. I wasn't (still am) not sure whether the libraries are not properly configured, or it's a configuration issue on my side. It happened for two libraries, so I'm thinking that my setup is somehow broken.
It's just so odd, because the library config files do specify the linker options!
I'll see if I can soon open an issue for both libraries, on their respective GitHub pages.