I am trying to compile a qt project with qtcurl using a statically built curl.
I am using the following to build a minimalist curl static library:
./configure --disable-shared --enable-static --prefix=/tmp/curl --disable-ldap --disable-sspi --without-librtmp --disable-ftp --disable-file --disable-dict --disable-telnet --disable-tftp --disable-rtsp --disable-pop3 --disable-imap --disable-smtp --disable-gopher --disable-smb --without-libidn --enable-ares
I am including
-L/tmp/curl/lib/libcurl.a
in the LIBS of the project, and
/tmp/curl/include
in the INCLUDEPATH
This is the output that I am getting:
QtCUrl.o: In function `QtCUrl::QtCUrl()':
QtCUrl.cpp:(.text+0x10d): undefined reference to `curl_easy_init'
QtCUrl.o: In function `QtCUrl::~QtCUrl()':
QtCUrl.cpp:(.text+0x32e): undefined reference to `curl_slist_free_all'
QtCUrl.cpp:(.text+0x355): undefined reference to `curl_easy_cleanup'
QtCUrl.o: In function `QtCUrl::setOptions(QHash<CURLoption, QVariant>&)':
QtCUrl.cpp:(.text+0xcee): undefined reference to `curl_easy_setopt'
QtCUrl.cpp:(.text+0xdac): undefined reference to `curl_easy_setopt'
QtCUrl.cpp:(.text+0xee9): undefined reference to `curl_slist_append'
QtCUrl.cpp:(.text+0xfe5): undefined reference to `curl_easy_setopt'
QtCUrl.cpp:(.text+0x1078): undefined reference to `curl_easy_setopt'
QtCUrl.cpp:(.text+0x109f): undefined reference to `curl_easy_setopt'
QtCUrl.cpp:(.text+0x1155): undefined reference to `curl_easy_setopt'
QtCUrl.cpp:(.text+0x1290): undefined reference to `curl_easy_setopt'
QtCUrl.o: In function `QtCUrl::exec(QHash<CURLoption, QVariant>&)':
QtCUrl.cpp:(.text+0x1f27): undefined reference to `curl_easy_perform'
QtCUrl.o: In function `curlGlobalInit()':
QtCUrl.cpp:(.text+0xa6): undefined reference to `curl_global_init'
collect2: error: ld returned 1 exit status
What am I missing here?
Related
I've compiled the OpenSSL library using Mingw32 and MSys with Strawberry Perl.
I used this forum post as a guide, even though it's quite old.
How to build OpenSSL with MinGW in Windows?
Everything went fine, I wanted to compile it as a static library and it worked, but whenever I try to compile the library with my project using g++ I get the following errors, which I have no idea what they mean.
libcrypto.a(e_capi.o):e_capi.c:(.text+0xf1): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x191): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x5ed): undefined reference to `_imp__CertGetCertificateContextProperty#16'
libcrypto.a(e_capi.o):e_capi.c:(.text+0xbd3): undefined reference to `_imp__CertGetCertificateContextProperty#16'
libcrypto.a(e_capi.o):e_capi.c:(.text+0xd40): undefined reference to `_imp__CertEnumCertificatesInStore#8'
libcrypto.a(e_capi.o):e_capi.c:(.text+0xdd9): undefined reference to `_imp__CertFindCertificateInStore#24'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x3012): undefined reference to `_imp__CertOpenStore#20'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x3051): undefined reference to `_imp__CertEnumCertificatesInStore#8'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x316f): undefined reference to `_imp__CertDuplicateCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x31f1): undefined reference to `_imp__CertCloseStore#8'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x32a5): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x396c): undefined reference to `_imp__CertOpenStore#20'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x39ab): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x39c3): undefined reference to `_imp__CertCloseStore#8'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x3a1f): undefined reference to `_imp__CertEnumCertificatesInStore#8'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x4195): undefined reference to `_imp__CertOpenStore#20'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x4208): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x4221): undefined reference to `_imp__CertCloseStore#8'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x4359): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(e_capi.o):e_capi.c:(.text+0x440d): undefined reference to `_imp__CertFreeCertificateContext#4'
libcrypto.a(b_addr.o):b_addr.c:(.text+0xbe): undefined reference to `_imp__getnameinfo#28'
libcrypto.a(b_addr.o):b_addr.c:(.text+0xf4): undefined reference to `_imp__ntohs#4'
libcrypto.a(b_addr.o):b_addr.c:(.text+0x29a): undefined reference to `gai_strerrorW'
libcrypto.a(b_addr.o):b_addr.c:(.text+0x7c0): undefined reference to `_imp__freeaddrinfo#4'
libcrypto.a(b_addr.o):b_addr.c:(.text+0xae8): undefined reference to `_imp__getaddrinfo#16'
libcrypto.a(b_addr.o):b_addr.c:(.text+0xbc9): undefined reference to `gai_strerrorW'
libcrypto.a(b_addr.o):b_addr.c:(.text+0xcb3): undefined reference to `_imp__getaddrinfo#16'
libcrypto.a(b_addr.o):b_addr.c:(.text+0xd91): undefined reference to `gai_strerrorW'
libcrypto.a(b_sock.o):b_sock.c:(.text+0xdf): undefined reference to `_imp__WSAStartup#8'
libcrypto.a(b_sock.o):b_sock.c:(.text+0xf0): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x2c7): undefined reference to `_imp__WSAStartup#8'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x2d8): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x3c1): undefined reference to `_imp__ntohs#4'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x41c): undefined reference to `_imp__getsockopt#20'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x43a): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x45c): undefined reference to `_imp__gethostbyname#4'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x4ab): undefined reference to `_imp__WSAStartup#8'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x4c2): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x54c): undefined reference to `_imp__WSACleanup#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x56d): undefined reference to `_imp__ioctlsocket#12'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x58a): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x757): undefined reference to `_imp__WSAStartup#8'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x768): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x962): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0x9ec): undefined reference to `_imp__setsockopt#20'
libcrypto.a(b_sock.o):b_sock.c:(.text+0xa25): undefined reference to `_imp__ioctlsocket#12'
libcrypto.a(b_sock.o):b_sock.c:(.text+0xa42): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock.o):b_sock.c:(.text+0xab6): undefined reference to `_imp__getsockname#12'
libcrypto.a(b_sock.o):b_sock.c:(.text+0xb1a): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x27): undefined reference to `_imp__socket#12'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x49): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x11c): undefined reference to `_imp__setsockopt#20'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x157): undefined reference to `_imp__connect#12'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x195): undefined reference to `_imp__setsockopt#20'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x1a6): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x264): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x2ca): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x362): undefined reference to `_imp__bind#12'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x3ba): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x467): undefined reference to `_imp__getsockopt#20'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x47d): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x531): undefined reference to `_imp__setsockopt#20'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x5dd): undefined reference to `_imp__listen#8'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x5eb): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x675): undefined reference to `_imp__setsockopt#20'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x686): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x71a): undefined reference to `_imp__setsockopt#20'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x72b): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x792): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x826): undefined reference to `_imp__accept#12'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x867): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x8cb): undefined reference to `_imp__closesocket#4'
libcrypto.a(b_sock2.o):b_sock2.c:(.text+0x8ec): undefined reference to `_imp__closesocket#4'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x1b2): undefined reference to `_imp__WSASetLastError#4'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x1d9): undefined reference to `_imp__send#16'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x20a): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x281): undefined reference to `_imp__WSASetLastError#4'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x2a0): undefined reference to `_imp__send#16'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x2da): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x34d): undefined reference to `_imp__WSASetLastError#4'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x370): undefined reference to `_imp__recv#16'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x3c2): undefined reference to `_imp__WSAGetLastError#0'
libcrypto.a(bss_sock.o):bss_sock.c:(.text+0x482): undefined reference to `_imp__WSAGetLastError#0'
collect2.exe: error: ld returned 1 exit status
I'm using VSCode as a development environment, this is the build command for the project, extracted from tasks.json:
g++.exe file1.cpp file2.cpp main.cpp -L*folder with the library* -lcrypto -o test.exe
The linker can't find several functions from Crypt32.lib and Ws2_32.lib. Link these to your exe by adding -lws2_32 -lcrypt32 to g++ command line.
#pragma comment(lib, "ws2_32.lib") is a Microsoft specific feature, g++ does not support this, thus you were not able to link libraries with this pragma. See also this post - #pragma comment(lib, "xxx.lib") equivalent under Linux?.
I have been having trouble with the Fast Artificial Neural Network (FANN) library. I can't seem to get it completely working on my system. I think I am missing some dependency, but I can't seem to figure out how to fix it.
I am on Ubuntu, but I decided to clone the repository from GitHub rather than use apt-get. I cloned to the directory /home/lucas/includes/fann and from that directory I performed cmake ., and finally sudo make install like instructed at the GitHub readme.
Some parts of the library work, but some crash. Here is my example file:
#include <iostream>
#include <fann.h>
#include <fann_cpp.h>
using namespace std;
using namespace FANN;
int main(int argc, char** argv) {
fann_type** input_data;
//training_data training_data;
return 0;
}
Here is my CMake file:
cmake_minimum_required(VERSION 2.8.4)
project(FANN_sin)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
include_directories(/usr/local/include/)
include_directories(/usr/local/lib/)
set(SOURCE_FILES main.cpp)
add_executable(FANN_sin ${SOURCE_FILES})
target_link_libraries(FANN_sin /usr/local/lib/libfann.a)
When I run the code with the training_data training_data commented out, it compiles and runs. However, when I try to run with that part uncommented, the project won't make.
Here are the errors:
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_batch_parallel._omp_fn.1':
floatfann.c:(.text+0x20): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0x28): undefined reference to `omp_get_thread_num'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_irpropm_parallel._omp_fn.3':
floatfann.c:(.text+0x116): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0x11e): undefined reference to `omp_get_thread_num'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_quickprop_parallel._omp_fn.5':
floatfann.c:(.text+0x304): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0x30c): undefined reference to `omp_get_thread_num'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_sarprop_parallel._omp_fn.7':
floatfann.c:(.text+0x592): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0x59a): undefined reference to `omp_get_thread_num'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_batch_parallel._omp_fn.0':
floatfann.c:(.text+0xf375): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0xf37d): undefined reference to `omp_get_thread_num'
floatfann.c:(.text+0xf3dd): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_irpropm_parallel._omp_fn.2':
floatfann.c:(.text+0xf4c5): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0xf4cd): undefined reference to `omp_get_thread_num'
floatfann.c:(.text+0xf52d): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_quickprop_parallel._omp_fn.4':
floatfann.c:(.text+0xf615): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0xf61d): undefined reference to `omp_get_thread_num'
floatfann.c:(.text+0xf67d): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_sarprop_parallel._omp_fn.6':
floatfann.c:(.text+0xf765): undefined reference to `omp_get_num_threads'
floatfann.c:(.text+0xf76d): undefined reference to `omp_get_thread_num'
floatfann.c:(.text+0xf7cd): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_batch_parallel':
floatfann.c:(.text+0x13a9a): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x13aa1): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x13ac5): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x13ad4): undefined reference to `GOMP_parallel_end'
floatfann.c:(.text+0x13b09): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x13b10): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x13b48): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x13b57): undefined reference to `GOMP_parallel_end'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_irpropm_parallel':
floatfann.c:(.text+0x13e6d): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x13e74): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x13e98): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x13ea7): undefined reference to `GOMP_parallel_end'
floatfann.c:(.text+0x13f09): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x13f10): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x13f79): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x13f88): undefined reference to `GOMP_parallel_end'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_quickprop_parallel':
floatfann.c:(.text+0x142ad): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x142b4): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x142d8): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x142e7): undefined reference to `GOMP_parallel_end'
floatfann.c:(.text+0x14355): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x1435c): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x143dd): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x143ec): undefined reference to `GOMP_parallel_end'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_sarprop_parallel':
floatfann.c:(.text+0x1470d): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x14714): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x14738): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x14747): undefined reference to `GOMP_parallel_end'
floatfann.c:(.text+0x1483d): undefined reference to `omp_set_dynamic'
floatfann.c:(.text+0x14844): undefined reference to `omp_set_num_threads'
floatfann.c:(.text+0x1492a): undefined reference to `GOMP_parallel_start'
floatfann.c:(.text+0x14939): undefined reference to `GOMP_parallel_end'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_batch_parallel._omp_fn.0':
floatfann.c:(.text+0xf4a4): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_irpropm_parallel._omp_fn.2':
floatfann.c:(.text+0xf5f4): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_quickprop_parallel._omp_fn.4':
floatfann.c:(.text+0xf744): undefined reference to `GOMP_barrier'
/usr/local/lib/libfann.a(floatfann.c.o): In function `fann_train_epoch_sarprop_parallel._omp_fn.6':
floatfann.c:(.text+0xf894): undefined reference to `GOMP_barrier'
collect2: error: ld returned 1 exit status
make[2]: *** [FANN_sin] Error 1
make[1]: *** [CMakeFiles/FANN_sin.dir/all] Error 2
make: *** [all] Error 2
I researched the errors, and I assume they are referring GOMP, an OpenMP implementation for GCC. I currently have GCC version 4.8.4. I have the support library package libgomp1 from apt-get installed also, so I'm not sure what the problem is.
Did I miss something? Thanks.
I'm working on a modification of the Wolfenstein 3D engine in SDL2 (using Wolf4SDL as a base) and I've run into a problem - when using -static in the linker options, I get a large variety of undefined references to various things. Here's my build log to show what I mean:
-------------- Build: Debug in Lazarus (compiler: GNU GCC Compiler)---------------
i686-w64-mingw32-g++.exe -LC:\SDL2\lib -o Lazarus.exe .objs\alu_cache.o .objs\alu_dbg_mem.o .objs\alu_gfx.o .objs\alu_hud.o .objs\alu_in.o .objs\alu_me_core.o .objs\alu_me_gui.o .objs\alu_me_symbols.o .objs\alu_me_textinput.o .objs\alu_me_tools.o .objs\alu_me_windows.o .objs\alu_menu.o .objs\alu_pak.o .objs\alu_particles.o .objs\asmcomp.o .objs\id_us_1.o .objs\vieasm.o .objs\wl_act1.o .objs\wl_act2.o .objs\wl_agent.o .objs\wl_debug.o .objs\wl_dir3dspr.o .objs\wl_draw.o .objs\wl_floorceiling.o .objs\wl_game.o .objs\wl_inter.o .objs\wl_main.o .objs\wl_play.o .objs\wl_state.o .objs\wl_text.o -static -pg -lgmon -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer -mwindows
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:58: undefined reference to `_imp__timeBeginPeriod#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to `_imp__timeEndPeriod#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:58: undefined reference to `_imp__timeBeginPeriod#4'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `SDL_TicksInit':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:106: undefined reference to `_imp__timeGetTime#0'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to `_imp__timeEndPeriod#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to `_imp__timeEndPeriod#4'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `SDL_GetTicks_REAL':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:159: undefined reference to `_imp__timeGetTime#0'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:58: undefined reference to `_imp__timeBeginPeriod#4'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `SDL_TicksInit':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:106: undefined reference to `_imp__timeGetTime#0'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to `_imp__timeEndPeriod#4'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `SDL_GetTicks_REAL':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:159: undefined reference to `_imp__timeGetTime#0'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:58: undefined reference to `_imp__timeBeginPeriod#4'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `SDL_TicksInit':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:106: undefined reference to `_imp__timeGetTime#0'
C:\SDL2\lib\libSDL2.a(SDL_systimer.o): In function `timeSetPeriod':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/timer/windows/SDL_systimer.c:52: undefined reference to `_imp__timeEndPeriod#4'
C:\SDL2\lib\libSDL2.a(SDL_windows.o): In function `WIN_CoInitialize':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/core/windows/SDL_windows.c:68: undefined reference to `_imp__CoInitializeEx#8'
C:\SDL2\lib\libSDL2.a(SDL_windows.o): In function `WIN_CoUninitialize':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/core/windows/SDL_windows.c:87: undefined reference to `_imp__CoUninitialize#0'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_SetupAPI':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:596: undefined reference to `ImmGetIMEFileNameA#12'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:609: undefined reference to `ImmGetContext#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:612: undefined reference to `ImmReleaseContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_GetId':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:530: undefined reference to `ImmGetIMEFileNameA#12'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:545: undefined reference to `GetFileVersionInfoSizeA#8'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:549: undefined reference to `GetFileVersionInfoA#16'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:550: undefined reference to `VerQueryValueA#16'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `UILess_GetCandidateList':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:966: undefined reference to `_imp__SysFreeString#4'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_ClearComposition':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:662: undefined reference to `ImmGetContext#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:666: undefined reference to `ImmNotifyIME#16'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:670: undefined reference to `ImmNotifyIME#16'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:671: undefined reference to `ImmReleaseContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_Disable':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:344: undefined reference to `ImmAssociateContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_ClearComposition':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:668: undefined reference to `ImmSetCompositionStringW#24'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:662: undefined reference to `ImmGetContext#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:666: undefined reference to `ImmNotifyIME#16'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:670: undefined reference to `ImmNotifyIME#16'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:671: undefined reference to `ImmReleaseContext#8'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:668: undefined reference to `ImmSetCompositionStringW#24'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `UIElementSink_BeginUIElement#12':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:1033: undefined reference to `_imp__SysFreeString#4'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `UIElementSink_UpdateUIElement#8':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:1060: undefined reference to `_imp__SysFreeString#4'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_Init':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:289: undefined reference to `_imp__CoCreateInstance#20'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:303: undefined reference to `ImmGetContext#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:304: undefined reference to `ImmReleaseContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `UILess_SetupSinks':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:1174: undefined reference to `_imp__CoCreateInstance#20'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_GetId':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:530: undefined reference to `ImmGetIMEFileNameA#12'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:545: undefined reference to `GetFileVersionInfoSizeA#8'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:549: undefined reference to `GetFileVersionInfoA#16'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_GetReadingString':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:402: undefined reference to `ImmGetContext#4'
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:477: undefined reference to `ImmReleaseContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_GetId':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:550: undefined reference to `VerQueryValueA#16'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_Quit':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:358: undefined reference to `ImmAssociateContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_Enable':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:329: undefined reference to `ImmAssociateContext#8'
C:\SDL2\lib\libSDL2.a(SDL_windowskeyboard.o): In function `IME_ClearComposition':
/Users/slouken/release/SDL/SDL2-2.0.3-source/foo-x86/../src/video/windows/SDL_windowskeyboard.c:662: undefined reference to `ImmGetContext#4'
Process terminated with status 1 (0 minute(s), 0 second(s))
50 error(s), 0 warning(s) (0 minute(s), 0 second(s))
This does not happen when linking a normal Wolf4SDL mod (which uses SDL 1.2), and it links correctly if I don't use -static but then won't run without various other DLLs being present (namely libgcc_s_dw2-1.dll and the like). While I can just change PATH to include my MinGW directory, when it comes time to distribute it I can't expect everyone to have MinGW installed, and I want to keep the number of DLLs I'm distributing with my mod to a minimum considering I'm already using SDL_mixer and SDL_image which come with a ton of DLLs already. Anyone have a solution to this?
OK, fixed the problem - I needed to link a variety of Windows libraries, namely Ole32, Oleaut32, Imm32, Winmm and Version. Not sure why this wasn't the case for SDL 1; it wasn't mentioned in the Migration Guide either so I'm not sure where the difference comes from.
For me this meant "use pkg-config --static" since I had compiled a static only version and wanted to use that.
Guess that's just how pkg-config rolls.
Another option (like the OP mentioned) is to either add the libraries you need "out of band" or to modify sdl2.pc so it includes "all the libraries you need" on the Libs: line (not Libs.static: line which probably already has them).
Again, that's how pkg-config rolls :|
I'm using robo robo simulator. It requires SDL to be installed. SDL was successfully installed using sudo apt-get install in Ubuntu
'make' was used to compile and link.
compilation was successful but while linking I got the following linker errors
[LD] roborobo
src/core/roborobo.o: In function `clean_up()':
roborobo.cpp:(.text+0x29): undefined reference to `SDL_FreeSurface'
roborobo.cpp:(.text+0x35): undefined reference to `SDL_FreeSurface'
roborobo.cpp:(.text+0x41): undefined reference to `SDL_FreeSurface'
roborobo.cpp:(.text+0x4d): undefined reference to `SDL_FreeSurface'
roborobo.cpp:(.text+0x59): undefined reference to `SDL_FreeSurface'
src/core/roborobo.o:roborobo.cpp:(.text+0x6a): more undefined references to `SDL_FreeSurface' follow
src/core/roborobo.o: In function `checkQuitEvent()':
roborobo.cpp:(.text+0xdff): undefined reference to `SDL_PollEvent'
src/core/roborobo.o: In function `handleKeyEvent(unsigned char*)':
roborobo.cpp:(.text+0xead): undefined reference to `SDL_Delay'
roborobo.cpp:(.text+0xf1a): undefined reference to `SDL_Delay'
roborobo.cpp:(.text+0xf43): undefined reference to `SDL_Delay'
roborobo.cpp:(.text+0x1037): undefined reference to `SDL_Delay'
roborobo.cpp:(.text+0x111e): undefined reference to `SDL_Delay'
src/core/roborobo.o:roborobo.cpp:(.text+0x1191): more undefined references to `SDL_Delay' follow
and many more
SDL_gfxPrimitives.c:(.text+0x7477): undefined reference to `SDL_UnlockSurface'
SDL_gfxPrimitives.c:(.text+0x7491): undefined reference to `SDL_UpperBlit'
SDL_gfxPrimitives.c:(.text+0x74e6): undefined reference to `SDL_CreateRGBSurface'
collect2: error: ld returned 1 exit status
make: [roborobo] Error 1 (ignored)
the make file also has sdl-config --cflags --libs -lSDL_image
the Makefile is in http://pastebin.com/5EdcZWAd
the entire console output after 'make' is in http://pastebin.com/yXDHR9xw
I'm writing a Qt application that uses Botan. For the Windows version I decided to use the precompiled DLL, so I downloaded the installer, installed Botan in C:\botan and added:
win32:INCLUDEPATH += C:/botan/include
win32:LIBS += -L"C:\botan" -lbotan
to my .pro file. However I'm getting linker errors (undefined reference to...) during the build process, and I can't see why - the correct .lib is specified in LIBS, the include path is fine.
I'm using MinGW.
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:52: undefined reference to `_imp___ZN5Botan17have_block_cipherERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:58: undefined reference to `_imp___ZN5Botan16max_keylength_ofERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:59: undefined reference to `_imp___ZN5Botan13block_size_ofERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:61: undefined reference to `_imp___ZN5Botan14AutoSeeded_RNGC1Ej'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:63: undefined reference to `_imp___ZN5Botan7get_s2kERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:64: undefined reference to `_imp___ZN5Botan3S2K14set_iterationsEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:65: undefined reference to `_imp___ZN5Botan3S2K15new_random_saltERNS_21RandomNumberGeneratorEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:67: undefined reference to `_imp___ZNK5Botan3S2K10derive_keyEjRKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:68: undefined reference to `_imp___ZNK5Botan3S2K10derive_keyEjRKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:69: undefined reference to `_imp___ZNK5Botan3S2K10derive_keyEjRKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan10MAC_FilterC1ERKSsRKNS_11OctetStringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan14Base64_EncoderC1Ebjb'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan5ChainC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan10get_cipherERKSsRKNS_11OctetStringES4_NS_10Cipher_DirE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan14Base64_EncoderC1Ebjb'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan5ChainC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan4ForkC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan4PipeC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:85: undefined reference to `_imp___ZN5Botan4Pipe9start_msgEv'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:83: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:86: undefined reference to `_imp___ZN5BotanrsERSiRNS_4PipeE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:87: undefined reference to `_imp___ZN5Botan4Pipe7end_msgEv'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:89: undefined reference to `_imp___ZN5Botan4Pipe18read_all_as_stringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:90: undefined reference to `_imp___ZN5Botan4Pipe18read_all_as_stringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:90: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:90: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:142: undefined reference to `_imp___ZN5Botan17have_block_cipherERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:148: undefined reference to `_imp___ZN5Botan16max_keylength_ofERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:149: undefined reference to `_imp___ZN5Botan13block_size_ofERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:151: undefined reference to `_imp___ZN5Botan7get_s2kERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:152: undefined reference to `_imp___ZN5Botan3S2K14set_iterationsEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:153: undefined reference to `_imp___ZN5Botan3S2K11change_saltERKNS_12MemoryRegionIhEE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:155: undefined reference to `_imp___ZNK5Botan3S2K10derive_keyEjRKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:156: undefined reference to `_imp___ZNK5Botan3S2K10derive_keyEjRKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:157: undefined reference to `_imp___ZNK5Botan3S2K10derive_keyEjRKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan10MAC_FilterC1ERKSsRKNS_11OctetStringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan14Base64_EncoderC1Ebjb'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan5ChainC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan4ForkC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan10get_cipherERKSsRKNS_11OctetStringES4_NS_10Cipher_DirE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan14Base64_DecoderC1ENS_16Decoder_CheckingE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan4PipeC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:166: undefined reference to `_imp___ZN5Botan4Pipe9start_msgEv'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:164: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:167: undefined reference to `_imp___ZN5BotanrsERSiRNS_4PipeE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:168: undefined reference to `_imp___ZN5Botan4Pipe7end_msgEv'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:170: undefined reference to `_imp___ZN5Botan4Pipe18read_all_as_stringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:174: undefined reference to `_imp___ZN5Botan4Pipe18read_all_as_stringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:174: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:174: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:195: undefined reference to `_imp___ZN5Botan14Base64_EncoderC1Ebjb'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:195: undefined reference to `_imp___ZN5Botan4PipeC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:196: undefined reference to `_imp___ZN5Botan4Pipe11process_msgERKNS_12MemoryRegionIhEE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:197: undefined reference to `_imp___ZN5Botan4Pipe15DEFAULT_MESSAGEE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:197: undefined reference to `_imp___ZN5Botan4Pipe18read_all_as_stringEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:197: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:197: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:202: undefined reference to `_imp___ZN5Botan14Base64_DecoderC1ENS_16Decoder_CheckingE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:202: undefined reference to `_imp___ZN5Botan4PipeC1EPNS_6FilterES2_S2_S2_'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:203: undefined reference to `_imp___ZN5Botan4Pipe11process_msgERKSs'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:204: undefined reference to `_imp___ZN5Botan4Pipe15DEFAULT_MESSAGEE'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:204: undefined reference to `_imp___ZN5Botan4Pipe8read_allEj'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:204: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o:D:\Development\Qt\silverlock-build-desktop\silverlocklib/../../Silverlock/silverlocklib/databasecrypto.cpp:204: undefined reference to `_imp___ZN5Botan4PipeD1Ev'
./debug\databasecrypto.o: In function `LibraryInitializer':
c:/botan/include/botan/init.h:34: undefined reference to `_imp___ZN5Botan18LibraryInitializer10initializeERKSs'
./debug\databasecrypto.o: In function `~LibraryInitializer':
c:/botan/include/botan/init.h:36: undefined reference to `_imp___ZN5Botan18LibraryInitializer12deinitializeEv'
./debug\databasecrypto.o: In function `~Exception':
c:/botan/include/botan/exceptn.h:25: undefined reference to `_imp___ZTVN5Botan9ExceptionE'
c:/botan/include/botan/exceptn.h:25: undefined reference to `_imp___ZTVN5Botan9ExceptionE'
c:/botan/include/botan/exceptn.h:25: undefined reference to `_imp___ZTVN5Botan9ExceptionE'
./debug\databasecrypto.o: In function `~Format_Error':
c:/botan/include/botan/exceptn.h:110: undefined reference to `_imp___ZTVN5Botan12Format_ErrorE'
c:/botan/include/botan/exceptn.h:110: undefined reference to `_imp___ZTVN5Botan12Format_ErrorE'
c:/botan/include/botan/exceptn.h:110: undefined reference to `_imp___ZTVN5Botan12Format_ErrorE'
./debug\databasecrypto.o: In function `~Decoding_Error':
c:/botan/include/botan/exceptn.h:135: undefined reference to `_imp___ZTVN5Botan14Decoding_ErrorE'
c:/botan/include/botan/exceptn.h:135: undefined reference to `_imp___ZTVN5Botan14Decoding_ErrorE'
./debug\databasecrypto.o: In function `Exception':
c:/botan/include/botan/exceptn.h:21: undefined reference to `_imp___ZTVN5Botan9ExceptionE'
./debug\databasecrypto.o: In function `~RandomNumberGenerator':
c:/botan/include/botan/rng.h:78: undefined reference to `_imp___ZTVN5Botan21RandomNumberGeneratorE'
c:/botan/include/botan/rng.h:78: undefined reference to `_imp___ZTVN5Botan21RandomNumberGeneratorE'
c:/botan/include/botan/rng.h:78: undefined reference to `_imp___ZTVN5Botan21RandomNumberGeneratorE'
./debug\databasecrypto.o: In function `~AutoSeeded_RNG':
c:/botan/include/botan/auto_rng.h:37: undefined reference to `_imp___ZTVN5Botan14AutoSeeded_RNGE'
c:/botan/include/botan/auto_rng.h:37: undefined reference to `_imp___ZTVN5Botan14AutoSeeded_RNGE'
./debug\databasecrypto.o: In function `Algorithm_Not_Found':
c:/botan/include/botan/exceptn.h:102: undefined reference to `_imp___ZTVN5Botan19Algorithm_Not_FoundE'
./debug\databasecrypto.o: In function `~Algorithm_Not_Found':
c:/botan/include/botan/exceptn.h:102: undefined reference to `_imp___ZTVN5Botan19Algorithm_Not_FoundE'
c:/botan/include/botan/exceptn.h:102: undefined reference to `_imp___ZTVN5Botan19Algorithm_Not_FoundE'
./debug\databasecrypto.o: In function `Format_Error':
c:/botan/include/botan/exceptn.h:110: undefined reference to `_imp___ZTVN5Botan12Format_ErrorE'
./debug\databasecrypto.o: In function `Decoding_Error':
c:/botan/include/botan/exceptn.h:135: undefined reference to `_imp___ZTVN5Botan14Decoding_ErrorE'
collect2: ld returned 1 exit status
Since Botan is included in QtCreator (2.x branches), you could just recompile QtCreator (or take the relevant parts), and use that. No messing with any makefiles (mingw works out of the box), and since you mention Qt, this will probably work very well.
As far as I know, official binaries are compatible with MSVC only. I guess you should build Botan from source to use it with MinGW. According to docs it's relatively easy to do:
$ python configure.py
$ make
$ make check
$ make install
But for me compiler autodetection didn't work as expected, so I had to do few additional steps:
Autoconfiguration:
$ python configure.py --cc=gcc
Edit generated Makefile. Replace line
LINK_TO = -ladvapi32.lib -luser32.lib
with
LINK_TO = -ladvapi32 -luser32
Build
$ make
$ make check
$ make install
I've used this command to build botan using mingw32-make.exe, i've ran it in a console window with Qt support.
python configure.py --cc=gcc --cpu=x86 --os=mingw --without-stack-protector --amalgamation --minimized-build --disable-shared --enable-modules=aes,aes_ssse3,auto_rng,bigint,block,cbc,ctr,des,dh,dsa,ec_group,ecdh,ecdsa,entropy,filters,hmac,mode_pad,pubkey,rsa,sha1,sha1_sse2,sha1_x86,sha2_32,sha2_32_x86,sha2_64,simd,system_rng,emsa_pkcs1,pbes2,pbkdf2 --without-documentation
mingw32-make.exe
mingw32-make.exe install