What do I do here?
User@DESKTOP MINGW64 /c/pdn-gmic/gmic/src
# make OPENCV_CFLAGS="" OPENCV_LIBS="" lib
make "CFLAGS+=-Dgmic_build -Dcimg_date=\\\"\\\" -Dcimg_time=\\\"\\\" -Dcimg_use_zlib -I. -I/mingw64/include -Dgmic_prerelease="\\\"201018\\\"" -std=c++11 -pedantic -Wall -Wextra -Wfatal-errors -Werror=unknown-pragmas -Werror=unused-label -Wshadow -Dcimg_use_abort -Dgmic_is_parallel -Dcimg_use_fftw3 -I/mingw64/include -Dcimg_use_curl -I/mingw64/include -Dcimg_use_png -I/mingw64/include/libpng16 -I/mingw64/include -Dcimg_use_jpeg -Dcimg_use_tiff -I/mingw64/include -fopenmp -Dcimg_use_openmp -Dcimg_display=2 -O2" "LIBS+=-L/mingw64/lib -lz -L/mingw64/lib -lm -Wl,--stack,16777216 -L/mingw64/lib -lfftw3 -L/mingw64/lib -lcurl -L/mingw64/lib -lpng16 -lz -ljpeg -L/mingw64/lib -ltiff -lgomp -lgdi32 " _lib
make[1]: Entering directory '/c/pdn-gmic/gmic/src'
g++ -o libgmic.o -c gmic.cpp -Dgmic_build -Dcimg_date=\"\" -Dcimg_time=\"\" -Dcimg_use_zlib -I. -I/mingw64/include -Dgmic_prerelease=\"201018\" -std=c++11 -pedantic -Wall -Wextra -Wfatal-errors -Werror=unknown-pragmas -Werror=unused-label -Wshadow -Dcimg_use_abort -Dgmic_is_parallel -Dcimg_use_fftw3 -I/mingw64/include -Dcimg_use_curl -I/mingw64/include -Dcimg_use_png -I/mingw64/include/libpng16 -I/mingw64/include -Dcimg_use_jpeg -Dcimg_use_tiff -I/mingw64/include -fopenmp -Dcimg_use_openmp -Dcimg_display=2 -O2
In file included from gmic.h:241,
from gmic.cpp:1994:
CImg.h: In function 'cimg_library::CImg<T>& cimg_library::CImg<T>::_load_jpeg(FILE*, const char*) [with T = float]':
CImg.h:7160:18: warning: variable 'res' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
7160 | std::FILE *res = 0;
| ^~~
CImg.h: In function 'cimg_library::CImg<T>& cimg_library::CImg<T>::_load_jpeg(FILE*, const char*) [with T = double]':
CImg.h:7160:18: warning: variable 'res' might be clobbered by 'longjmp' or 'vfork' [-Wclobbered]
ar rcs libgmic.a libgmic.o
g++ -shared -std=c++11 -pedantic -Wl,-soname,libgmic.so.2 -o libgmic.so libgmic.o -L/mingw64/lib -lz -L/mingw64/lib -lm -Wl,--stack,16777216 -L/mingw64/lib -lfftw3 -L/mingw64/lib -lcurl -L/mingw64/lib -lpng16 -lz -ljpeg -L/mingw64/lib -ltiff -lgomp -lgdi32
collect2.exe: fatal error: CreateProcess: No such file or directory
compilation terminated.
make[1]: *** [Makefile:413: _lib] Error 1
make[1]: Leaving directory '/c/pdn-gmic/gmic/src'
make: *** [Makefile:409: lib] Error 2
afre
(Alan)
October 19, 2020, 12:23am
2
I haven’t built anything in a very long time. I would start by checking out the makefile.
No idea, really.
But if you don’t need libgmic
then maybe try to not compile it ?
kmilos
October 19, 2020, 9:02am
4
AFAIK there is a pre-built package in the msys2 repo , anything wrong with it?
I guess @Reptorian want to hack the G’MIC source code, and build his own version of the software ?
kmilos
October 19, 2020, 9:38am
6
Sure… In that case maybe the msys2 recipe and patches could help as well?
ggbutcher
(Glenn Butcher)
October 19, 2020, 1:59pm
7
How old is your msys2? In stackoverflow I found rather dated dialogue that leaned toward such…
Actually, I do need libgmic. My goal in the end is to convert my g’mic scripts to Paint.NET
plugin with gmic-sharp, so that users of Paint.NET
would have my g’mic filters as plugin, and so I wouldn’t need to know c# syntax or workaround that are rather not enjoyable to type in. Hence, why you see pdn-gmic in the error.
ggbutcher:
How old is your msys2?
I got it from here - https://www.msys2.org/
Hmm, does this mean anything?
DESKTOP MINGW64 /c/pdn-gmic/gmic/src
$ make OPENCV_CFLAGS="" OPENCV_LIBS="" FLTO="" lib
make "CFLAGS+=-Dgmic_build -Dcimg_date=\\\"\\\" -Dcimg_time=\\\"\\\" -Dcimg_use_zlib -I. -I/mingw64/include -Dgmic_prerelease="\\\"201019\\\"" -std=c++11 -pedantic -Wall -Wextra -Wfatal-errors -Werror=unknown-pragmas -Werror=unused-label -Wshadow -Dcimg_use_abort -Dgmic_is_parallel -Dcimg_use_fftw3 -I/mingw64/include -Dcimg_use_curl -I/mingw64/include -Dcimg_use_png -I/mingw64/include/libpng16 -I/mingw64/include -Dcimg_use_jpeg -Dcimg_use_tiff -I/mingw64/include -fopenmp -Dcimg_use_openmp -Dcimg_display=2 -O2" "LIBS+=-L/mingw64/lib -lz -L/mingw64/lib -lm -Wl,--stack,16777216 -L/mingw64/lib -lfftw3 -L/mingw64/lib -lcurl -L/mingw64/lib -lpng16 -lz -ljpeg -L/mingw64/lib -ltiff -lgomp -lgdi32 " _lib
make[1]: Entering directory '/c/pdn-gmic/gmic/src'
ar rcs libgmic.a libgmic.o
g++ -shared -std=c++11 -pedantic -Wl,-soname,libgmic.so.2 -o libgmic.so libgmic.o -L/mingw64/lib -lz -L/mingw64/lib -lm -Wl,--stack,16777216 -L/mingw64/lib -lfftw3 -L/mingw64/lib -lcurl -L/mingw64/lib -lpng16 -lz -ljpeg -L/mingw64/lib -ltiff -lgomp -lgdi32
g++ -o use_libgmic use_libgmic.cpp -std=c++11 -pedantic -L. -lgmic -L/mingw64/lib -lz -L/mingw64/lib -lm -Wl,--stack,16777216 -L/mingw64/lib -lfftw3 -L/mingw64/lib -lcurl -L/mingw64/lib -lpng16 -lz -ljpeg -L/mingw64/lib -ltiff -lgomp -lgdi32
make[1]: Leaving directory '/c/pdn-gmic/gmic/src'
EDIT: I think I can actually compile g’mic-sharp. Just a few more things to figure out now.
afre
(Alan)
October 20, 2020, 12:32am
10
It doesn’t say what is wrong… I guess you can tell where it stopped by seeing which files are missing from the build…
From Visual Studio - gmic.lib is missing. But, I’m not sure if you guys can address that.
@PDN_GMIC could.
samj
(samj)
October 21, 2020, 10:45pm
12
@Reptorian
I don’t understand the problem with your filters under Paint.Net .
They work on my computer :
I said that I wanted to make pdn plugins using gmic-sharp which uses gmic as a library. It isn’t about gmic-qt, but rather plugins for paint.net
users. Gmic as a plugin and individual plugins are different.
samj
(samj)
October 22, 2020, 2:09am
14
MSYS2
As indicated by @kmilos , try these commands which in principle will download the right dependencies then try your G’MIC compilation
64bit
pacman -S mingw-w64-x86_64-gmic
32bit
pacman -S mingw-w64-i686-gmic
You cannot mix compilers when building gmic-sharp-native, you have to build both the libgmic static library and the libGmicSharpNative shared library with the same compiler.
As stated in the gmic-sharp-native readme, the Visual Studio build process is only intended for debugging.
The MSYS 2 instructions are the preferred method of building the library on Windows.
The command seems to work.
At the end I get in src: use_libgmic.exe, libgmic.so, libgmic.a, libgmic.o
I don’t know if there should be other files.
Not very elegant to have an in-source build.
That’s exactly what I get. But, putting them somewhere in bin files of mingw64 folder helps, but I did get a error there using msys2. It’s so close to doing it. I do wish there was clarification on what to do with .a,.so,and .o file in context of gmic-sharp-native.
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgmic
collect2.exe: error: ld returned 1 exit status
Seem like it’s relate to:
C:\msys64\mingw64\bin
C:\msys64\mingw64\lib\gcc\x86_64-w64-mingw32\10.2.0
I believe I have to copy the libgmic.o, and libgmic.a into C:\msys64\mingw64\lib\gcc\x86_64-w64-mingw32\10.2.0\
, but the .so?
Here’s what I get by just copying .a and .o file only to 10.2.0 folder
$ g++ -shared -DGMICSHARPNATIVE_EXPORTS -I../gmic/src ./GmicSharpNative.cpp ./version.o -o ../bin/x64/libGmicSharpNative.dll -L../gmic/gcc64 -Wl,--stack,16777216 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -static -lgmic -lfftw3 -lcurl -ltiff -lz -lzstd -llzma -lgomp -ljpeg -lpng
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x78): undefined reference to `__imp_GetDeviceCaps'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0xf1): undefined reference to `__imp_CreateCompatibleDC'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x16f): undefined reference to `__imp_CreateCompatibleBitmap'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x184): undefined reference to `__imp_SelectObject'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x1f3): undefined reference to `__imp_BitBlt'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x213): undefined reference to `__imp_DeleteObject'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x221): undefined reference to `__imp_DeleteDC'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIfEEviiiiRNS_4CImgIT_EE]+0x3a7): undefined reference to `__imp_GetDIBits'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x78): undefined reference to `__imp_GetDeviceCaps'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0xf1): undefined reference to `__imp_CreateCompatibleDC'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x16f): undefined reference to `__imp_CreateCompatibleBitmap'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x184): undefined reference to `__imp_SelectObject'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x1f3): undefined reference to `__imp_BitBlt'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x213): undefined reference to `__imp_DeleteObject'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x221): undefined reference to `__imp_DeleteDC'
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0\libgmic.a(libgmic.o):gmic.cpp:(.text$_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE[_ZN12cimg_library11CImgDisplay10screenshotIdEEviiiiRNS_4CImgIT_EE]+0x3a7): undefined reference to `__imp_GetDIBits'
collect2.exe: error: ld returned 1 exit status
afre
(Alan)
November 20, 2020, 10:52pm
18
*.a
are statically linked libraries and *.so
are dynamically linked. Not sure about moving them around…
But then I get this error if I don’t copy and paste:
$ g++ -shared -DGMICSHARPNATIVE_EXPORTS -I../gmic/src ./GmicSharpNative.cpp ./version.o -o ../bin/x64/libGmicSharpNative.dll -L../gmic/gcc64 -Wl,--stack,16777216 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -static -lgmic -lfftw3 -lcurl -ltiff -lz -lzstd -llzma -lgomp -ljpeg -lpng
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgmic
collect2.exe: error: ld returned 1 exit status
That’s the step after building libgmic. Gmic-sharp-native instruction tells me nothing about where to build libgmic other than building it inside gmic-sharp-native folder which almost worked, but ended up with a strange error that’s not above.
afre
(Alan)
November 20, 2020, 11:24pm
20
Could be a number of things in your configuration: forgetting to link, linking wrong directory, flag order, msys64/mingw64 setup or bug, etc.