c++ - Code::Blocks w/ MinGW: statically link libpng into a dll -


i'm trying link libpng16.lib .dll file cannot work. included libpng16.lib , zlib.lib project dependencies (in right order, libpng first) still png_* linking errors.

even other's solution search in google won't work.

edit:

here's log:

mingw32-g++.exe -wall  -o2  -std=c++11 -wall -g    -c c:\users\mark\documents\codeblocks\textureloader\textureloader.cpp -o obj\release\textureloader.o c:\users\mark\documents\codeblocks\textureloader\textureloader.cpp: in static member function 'static unsigned int textureloader::png_texture_load(const char*)': c:\users\mark\documents\codeblocks\textureloader\textureloader.cpp:105:21: warning: comparison between signed , unsigned integer expressions [-wsign-compare] mingw32-g++.exe -shared  -wl,--out-implib=bin\release\libtextureloader.a -wl,--dll -lc:\mingw\include  obj\release\textureloader.o   -o bin\release\textureloader.dll -lopengl32 -lglu32 -s  c:\users\mark\documents\codeblocks\textureloader\libpng16.lib c:\users\mark\documents\codeblocks\textureloader\libpng16.lib  obj\release\textureloader.o: in function `zn13textureloader16png_texture_loadepkc': c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:27: undefined reference `png_sig_cmp' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:33: undefined reference `png_create_read_struct' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:41: undefined reference `png_create_info_struct' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:50: undefined reference `png_create_info_struct' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:59: undefined reference `png_set_longjmp_fn' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:66: undefined reference `png_init_io' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:68: undefined reference `png_set_sig_bytes' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:70: undefined reference `png_read_info' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:77: undefined reference `png_get_ihdr' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:79: undefined reference `png_read_update_info' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:81: undefined reference `png_get_rowbytes' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:109: undefined reference `png_read_image' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:123: undefined reference `png_destroy_read_struct' c:/users/mark/documents/codeblocks/textureloader/textureloader.cpp:100: undefined reference `png_destroy_read_struct' 

undefined symbols during linking indicates there's wrong import libraries you're trying link against or there's disagreement between toolset looking , symbols import provides.

having said that, gnu ld linker comes mingw should able understand msvc .lib import libraries. alternative can try linking directly against libpng16.dll passing linker.

for example, try linking command:

g++.exe -shared -wl,--out-implib=bin\release\libtextureloader.a -lc:\mingw\include obj\release\textureloader.o -o bin\release\textureloader.dll -lopengl32 -lglu32 path\location\of\your\libpng16.dll

note -lc:\mingw\include in original link command not right. library path directly containing runtime , various other imports reside somewhere in mingw's lib directory rather in include directory. example, mines in g:\mingw32-4.6.3\i686-w64-mingw32\lib.


Comments

Popular posts from this blog

Change php variable from jquery value using ajax (same page) -

Pull out data related to my apps from Android Play Store and iOS App Store -

How can I fetch data from a web server in an android application? -