Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[WinAPI] undefined reference to `__imp_InitCommonControlsEx' - problem z instalacją Common Controls

Ostatnio zmodyfikowano 2015-02-25 08:15
Autor Wiadomość
mikson
Temat założony przez niniejszego użytkownika
[WinAPI] undefined reference to `__imp_InitCommonControlsEx' - problem z instalacją Common Controls
» 2015-02-23 18:58:52
Gdy próbuję dołączyć do programu InitCommonControlsEx (libcomctl32.a) kompilator wywala taki błąd:
main.cpp:(.text+0x45c): undefined reference to `__imp_InitCommonControlsEx'
[Error] ld returned 1 exit status

Oczywiście plik z biblioteką mam zalinkowany. Oto kod:
C/C++
#include <iostream>
#include <windows.h>
#include <fstream>
#include <time.h>
#include <tchar.h>
#include <cstdio>
#include <stdio.h>
#include <algorithm>
#include <vector>
#include <Wininet.h>

#define pLogZaloguj 501
#define pLogZapomnialem 502
#define cLogZapamietaj 503
#define tLogLogin 504
#define tLogHaslo 505

#if defined __MINGW_H
#define _WIN32_IE 0x0400
#endif
#include <commctrl.h>


using namespace std;

HBRUSH g_hBrush;

ofstream logStworz( "log.txt" );
std::fstream log;

HWND hwndLog;
HWND hwnd; /* A 'HANDLE', hence the H, or a pointer to our window */

/* The 'main' function of Win32 GUI programs: this is where execution starts */
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) {
    WNDCLASSEX wc; /* A properties struct of our window */
    MSG Msg; /* A temporary location for all messages */
   
    /* zero out the struct and set the stuff we want to modify */
    memset( & wc, 0, sizeof( wc ) );
    wc.cbSize = sizeof( WNDCLASSEX );
    wc.lpfnWndProc = WndProc; /* This is where we will send messages to */
    wc.hInstance = hInstance;
    wc.hCursor = LoadCursor( NULL, IDC_ARROW );
   
    /* White, COLOR_WINDOW is just a #define for a system color, try Ctrl+Clicking it */
    wc.hbrBackground =( HBRUSH )( COLOR_WINDOW + 1 );
    wc.lpszClassName = "WindowClass";
    wc.hIcon = LoadIcon( NULL, IDI_APPLICATION ); /* Load a standard icon */
    wc.hIconSm = LoadIcon( NULL, IDI_APPLICATION ); /* use the name "A" to use the project icon */
   
    INITCOMMONCONTROLSEX icc;
    icc.dwSize = sizeof( INITCOMMONCONTROLSEX );
    icc.dwICC = ICC_BAR_CLASSES; // toolbary, statusbary i tooltipy
    InitCommonControlsEx( & icc );
   
    log.open( "log.txt", std::ios::in | std::ios::out | std::ios::trunc );
    log << "Log rozpoczęty.\n";
   
    //Dotąd wystarczy... :-)
Co może być przyczyną błędu?
P-127261
mikson
Temat założony przez niniejszego użytkownika
» 2015-02-24 14:45:06
P-127316
Brunon3
» 2015-02-24 18:13:02
"Ktoś" mi mówił że dostanę bana bo "dałem bezsensownego posta", oczywiście przez pomyłkę. A za dawanie pustych postów bana nie ma?

EDIT:
Sorry nie zauważyłem że to ten sam użytkownik co założył temat, poniosło mnie, przepraszam bardzo. :)
P-127322
Monika90
» 2015-02-24 19:05:26
Nie wiem dlaczego to nie działa.


Oczywiście plik z biblioteką mam zalinkowany.
W jaki sposób go zalinkowałeś? Jakiego kompilatora używasz?

Zastąp to
C/C++
INITCOMMONCONTROLSEX icc;
icc.dwSize = sizeof( INITCOMMONCONTROLSEX );
icc.dwICC = ICC_BAR_CLASSES; // toolbary, statusbary i tooltipy
InitCommonControlsEx( & icc );

tym
C/C++
InitCommonControls();
i napisz czy coś to zmieniło.

@Brunon3
Nikt nie da Ci bana za jeden bezsensowny post, ale za 100 takich postów to już całkiem możliwe.
P-127323
mikson
Temat założony przez niniejszego użytkownika
» 2015-02-24 20:02:51
Oczywiście plik z biblioteką mam zalinkowany.
W jaki sposób go zalinkowałeś? Jakiego kompilatora używasz?
Używam DevC++, plik libcomctl32.a przeniosłem do lokalizacji C:\Program Files (x86)\Dev-Cpp\MinGW64\lib a następnie wszedłem w opcje projektu > Parametry > Linker > Dodaj plik i wskazałem na w/w plik.

Zastąp to
Taka zmiana absolutnie nic nie zmieniła (oprócz tego że teraz kompilator pisze undefined reference to `__imp_InitCommonControls' zamiast undefined reference to `__imp_InitCommonControlsEx')
P-127325
maly
» 2015-02-24 20:39:09
plik libcomctl32.a przeniosłem do lokalizacji
po co, na co i dlaczego?
Pozatym wziąłeś pewnie nie tego co trzeba, masz tam dwa foldery lib i lib32.
P-127328
programirer
» 2015-02-24 21:04:55
To ma jakieś znaczenie gdzie znajduje się plik z biblioteką? I tak trzeba podać ścieżkę w linkerze...
P-127331
mikson
Temat założony przez niniejszego użytkownika
» 2015-02-24 21:09:10
Przeniosłem libcomctl32.a do folderu, w którym jest EXE (zmieniłem też ścieżkę w linkerze), ale błąd nadal nie ustępuje.
P-127332
« 1 » 2
  Strona 1 z 2 Następna strona