crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
> [arm-mingw32][wince] Компилирование под Windows Mobile, ошибки при компилировании
Zueuk
  опции профиля:
сообщение 10.5.2010, 22:03
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 10.5.2010
Пользователь №: 1702

Спасибо сказали: 0 раз(а)




Репутация:   0  


Опытные товарищи, есть вопросы.
Использую в Linux (Fedora 11) кросс-компилятор mingw32. А конкретнее, версию для arm (arm-mingw32).
При компилировании примера (код примера под спойлером ниже), выдаёт ошибки:
Цитата
/opt/mingw32ce/bin/arm-mingw32ce-g++ -fno-exceptions -o test_wince.exe test.cpp
/tmp/ccdgZQsW.o:test.cpp:(.text+0x58): undefined reference to `CommandBar_Create'
/tmp/ccdgZQsW.o:test.cpp:(.text+0x70): undefined reference to `CommandBar_AddAdornments'
/tmp/ccdgZQsW.o:test.cpp:(.text+0xa0): undefined reference to `CommandBar_Height'
collect2: ld returned 1 exit status
make: *** [wince] Ошибка 1

Более подробный вывод ошибок.
Раскрывающийся текст

make wince
/opt/mingw32ce/bin/arm-mingw32ce-g++ -fno-exceptions -v -o test_wince.exe test.cpp
Using built-in specs.
Target: arm-mingw32ce
Configured with: /usr/src/rpm/BUILD/cegcc-mingw32ce-0.55/src/gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --target=arm-mingw32ce --prefix=/opt/mingw32ce --enable-threads=win32 --disable-nls --enable-languages=c,c++ --disable-win32-registry --disable-multilib --disable-interwork --without-newlib --enable-checking --with-headers
Thread model: win32
gcc version 4.1.0
/opt/mingw32ce/libexec/gcc/arm-mingw32ce/4.1.0/cc1plus -quiet -v -D__COREDLL__ -D__MINGW32__ -D__MINGW32CE__ -D__CEGCC_VERSION__ -idirafter ../include/w32api -idirafter ../../include/w32api test.cpp -quiet -dumpbase test.cpp -auxbase test -version -fno-exceptions -o /tmp/ccOgODGH.s
ignoring nonexistent directory "/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/sys-include"
ignoring nonexistent directory "../include/w32api"
ignoring nonexistent directory "../../include/w32api"
#include "..." search starts here:
#include <...> search starts here:
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../include/c++/4.1.0
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../include/c++/4.1.0/arm-mingw32ce
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../include/c++/4.1.0/backward
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/include
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/include
End of search list.
GNU C++ version 4.1.0 (arm-mingw32ce)
        compiled by GNU C version 4.3.2.
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 1ccab0ce77fd000b9b5f232ad151db14
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/bin/as -o /tmp/ccFSX8cJ.o /tmp/ccOgODGH.s
/opt/mingw32ce/libexec/gcc/arm-mingw32ce/4.1.0/collect2 -Bdynamic -o test_wince.exe /opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/lib/crt3.o -L/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0 -L/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/lib /tmp/ccFSX8cJ.o -lstdc++ -lmingw32 -lgcc -lceoldname -lmingwex -lcoredll -lcoredll -lmingw32 -lgcc -lceoldname -lmingwex -lcoredll
/tmp/ccFSX8cJ.o:test.cpp:(.text+0x58): undefined reference to `CommandBar_Create'
/tmp/ccFSX8cJ.o:test.cpp:(.text+0x70): undefined reference to `CommandBar_AddAdornments'
/tmp/ccFSX8cJ.o:test.cpp:(.text+0xa0): undefined reference to `CommandBar_Height'
collect2: ld returned 1 exit status


Пример кода, который пробуется:
Раскрывающийся текст

/============================================================
// TinyCE - Небольшая программа для Windows CE
//
#include <windows.h>
#include <commctrl.h>             // подключение линейки команд
LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM,LPARAM);
TCHAR szAppName[] = TEXT ("TinyCE");
HINSTANCE hInst;
//-----------------------------------
// Точка входа в программу
//
int WINAPI WinMain (HINSTANCE hInstance,
                    HINSTANCE hPrevInstance, LPWSTR lpCmdLine,
                    int nCmdShow) {
  WNDCLASS wc;
  HWND hWnd;
  MSG msg;
  hInst = hInstance;
  // Регистрируется класс App Main Window
  memset (&wc, 0, sizeof (wc));
  wc.lpfnWndProc = MainWndProc;         // Внешний вызов
  wc.hInstance = hInstance;             // Дескриптор владельца
  wc.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH);
  wc.lpszClassName = szAppName;         // Имя класса окна
  if (RegisterClass(&wc) == 0) return -1;
  // Построение главного окна
  hWnd = CreateWindow (szAppName,       // Класс окна
                       szAppName,       // Заголовок окна
                       WS_VISIBLE,      // Флаги стилей
                       CW_USEDEFAULT,   // Позиция по X
                       CW_USEDEFAULT,   // Позиция по Y
                       CW_USEDEFAULT,   // Исходная ширина
                       CW_USEDEFAULT,   // Исходная высота
                       NULL,            // Предок
                       NULL,            // Меню, должен иметь
                                        // значение NULL
                       hInstance,       // Экземпляр программы
                       NULL);           // Указатель для
                                        // создания параметров
  // В качестве return-значения передается код ошибки,
  // если окно не построено
  if (!IsWindow (hWnd)) return -2;
  // Стандартные вызовы отображения и обновления
  ShowWindow (hWnd, nCmdShow);
  UpdateWindow (hWnd);
  // Цикл обработки сообщений в программе
  while (GetMessage (&msg, NULL, 0, 0)) {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
  }
  return 0;
}
//-----------------------------------
// Основная оконная процедура
//
LRESULT CALLBACK MainWndProc(HWND hWnd, UINT wMsg,
                             WPARAM wParam, LPARAM lParam) {
  HWND hwndCB;
    PAINTSTRUCT ps;
    RECT rect;
    HDC hdc;
  switch (wMsg) {
  case WM_CREATE:
    // Создание минимальной панели команд, содержащей только
    // кнопку Exit.
    hwndCB = CommandBar_Create (hInst, hWnd, 0x10);
    CommandBar_AddAdornments (hwndCB, 0, 0);
    break;
  case WM_PAINT:
    // Настройка размера прямоугольника клиентского окна
    // с учетом высоты панели команд.
      GetClientRect (hWnd, &rect);
    rect.top += CommandBar_Height (GetDlgItem (hWnd, 0x10));
      hdc = BeginPaint (hWnd, &ps);
    DrawText (hdc, TEXT ("Hello Windows CE!"), -1, &rect,
                DT_CENTER | DT_VCENTER | DT_SINGLELINE);
      EndPaint (hWnd, &ps);
    break;
  case WM_DESTROY:
    break;
  }
  return DefWindowProc(hWnd, wMsg, wParam, lParam);
}


Все заголовочные файлы есть и лежат, где нужно. Что за ошибка и как исправить?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 10.5.2010, 23:08
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Zueuk @ 10.5.2010, 23:03) *
undefined reference to `CommandBar_Create'
говорит о том, что компилятор не видит хидер в котором реализован CommandBar_Create.
И обрати внимание на:
Цитата
ignoring nonexistent directory "/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/sys-include"
ignoring nonexistent directory "../include/w32api"
ignoring nonexistent directory "../../include/w32api"
Как я понимаю Commctrl.h должен быть в одной из тех директорий!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 11.5.2010, 8:23
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Хедеры не при чём.
Это ошибки линкера. Он не нашел указанных символов. Судя по названиям они должны лежать в библиотеке comctl32 так что добавь в командную строку -lcomctl32
Скорее всего ещё какие-то либы понадобятся. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_Zueuk_*_*
сообщение 11.5.2010, 14:22
Сообщение #4





Гости








    


Цитата(ViGOur @ 10.5.2010, 23:08) *
Как я понимаю Commctrl.h должен быть в одной из тех директорий!

Спасиалньо проверил - есть такое.

Цитата(Tonal @ 11.5.2010, 8:23) *
Это ошибки линкера. Он не нашел указанных символов. Судя по названиям они должны лежать в библиотеке comctl32 так что добавь в командную строку -lcomctl32

Вот это попробую.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zueuk
  опции профиля:
сообщение 11.5.2010, 14:25
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 10.5.2010
Пользователь №: 1702

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Гость_Zueuk_* @ 11.5.2010, 14:22) *
Цитата(ViGOur @ 10.5.2010, 23:08) *
Как я понимаю Commctrl.h должен быть в одной из тех директорий!

Спасиалньо проверил - есть такое.

Цитата(Tonal @ 11.5.2010, 8:23) *
Это ошибки линкера. Он не нашел указанных символов. Судя по названиям они должны лежать в библиотеке comctl32 так что добавь в командную строку -lcomctl32

Вот это попробую.

Забыл залогиниться.

PS "Спасиалньо" читать, как "специально".
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zueuk
  опции профиля:
сообщение 11.5.2010, 19:26
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 10.5.2010
Пользователь №: 1702

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Tonal @ 11.5.2010, 8:23) *
Хедеры не при чём.
Это ошибки линкера. Он не нашел указанных символов. Судя по названиям они должны лежать в библиотеке comctl32 так что добавь в командную строку -lcomctl32
Скорее всего ещё какие-то либы понадобятся. :)

А верно ли, что прописать -lcomctl32? Посмотрел - такого заголовочного файла нет. И компилятор выдаёт об этом ошибку:
Цитата
make wince
/opt/mingw32ce/bin/arm-mingw32ce-g++ -fno-exceptions -lcomctl32 -o test_wince.exe test.cpp
/opt/mingw32ce/lib/gcc/arm-mingw32ce/4.1.0/../../../../arm-mingw32ce/bin/ld: cannot find -lcomctl32
collect2: ld returned 1 exit status

Попробовал -lcommctrl, но ошибка все та же, что выше.
Приведу свой make-файл. Может в нём ошибся.
Раскрывающийся текст

$ cat Makefile
TARGET=  test

CC_WINCE= /opt/mingw32ce/bin/arm-mingw32ce-g++

LIB_WINCE= -I/opt/mingw32ce/arm-mingw32ce/include
#CFLAGS_WINCE= -fno-exceptions -finput-charset="cp1251"
CFLAGS_WINCE= -fno-exceptions -lcommctrl

wince:
# Compiling for wince
        $(CC_WINCE) $(CFLAGS_WINCE) -o $(TARGET)_wince.exe $(TARGET).cpp
        ##$(LIB_WINCE)
        /opt/mingw32ce/bin/arm-mingw32ce-strip $(TARGET)_wince.exe

clean:
        rm -f $(TARGET)_wince.exe


Вот содержимое папки include:
Раскрывающийся текст

ls -pxCF /opt/mingw32ce/arm-mingw32ce/include

accctrl.h   dvdevcod.h    lmchdev.h   ntldap.h    rpcnsip.h      usp10.h
aclapi.h    dvdmedia.h    lmconfig.h  ntsecapi.h    rpcnterr.h     utime.h
aclui.h     edevdefs.h    lmcons.h    ntsecpkg.h    rpcproxy.h     uxtheme.h
adsprop.h   errno.h    lmerr.h     oaidl.h    rtutils.h      values.h
af_irda.h   errorrep.h    lmerrlog.h  objbase.h    schannel.h     varargs.h
afxres.h    errors.h    lm.h        objfwd.h    schnlsp.h      vfw.h
altcecrt.h  evcode.h    lmmsg.h     objidl.h    scrnsave.h     vidcap.h
amaudio.h   excpt.h    lmremutl.h  objsafe.h    sddl.h           vmr9.h
amvideo.h   exdisp.h    lmrepl.h    objsel.h    sdl/           vptype.h
assert.h    exdispid.h    lmserver.h  ocidl.h    search.h       w32api.h
audevcod.h  fcntl.h    lmshare.h   odbcinst.h    secext.h       wchar.h
aviriff.h   fenv.h    lmsname.h   ole2.h    security.h     wctype.h
aygshell.h  float.h    lmstats.h   ole2ver.h    service.h      winable.h
basetsd.h   fltdefs.h    lmsvc.h     oleacc.h    servprov.h     winbase.h
basetyps.h  getopt.h    lmuseflg.h  oleauto.h    setjmp.h       winber.h
bdatypes.h  GL/        lmuse.h     olectl.h    setupapi.h     wincon.h
cderr.h     httpext.h    lmwksta.h   olectlid.h    share.h        wincrypt.h
ceconfig.h  icm.h    locale.h    oledlg.h    shellapi.h     windef.h
cegcc.h     icmpapi.h    lzexpand.h  ole.h    shldisp.h      windns.h
cguid.h     idispids.h    malloc.h    oleidl.h    shlguid.h      windows.h
cmnquery.h  il21dec.h    mapi.h        pbt.h    shlobj.h       windowsx.h
comcat.h    imagehlp.h    math.h        pm.h    shlwapi.h      winerror.h
commctrl.h  imm.h    mbctype.h   poppack.h    signal.h       wingdi.h
commdlg.h   initguid.h    mbstring.h  powrprof.h    sipapi.h       wininet.h
complex.h   intshcut.h    mciavi.h    process.h    snmp.h           winioctl.h
conio.h     inttypes.h    mcx.h        projects.h    specstrings.h  winldap.h
control.h   io.h    mem.h        prsht.h    sqlext.h       winnetwk.h
cplext.h    ipexport.h    memory.h    psapi.h    sql.h           winnls.h
cpl.h        iphlpapi.h    mgm.h        pshpack1.h    sqltypes.h     winnt.h
ctype.h     ipifcons.h    mgmtapi.h   pshpack2.h    sqlucode.h     winperf.h
custcntl.h  ipinfoid.h    _mingw.h    pshpack4.h    sspi.h           winreg.h
dbt.h        iprtrmib.h    mlang.h     pshpack8.h    stdint.h       winresrc.h
dde.h        iptypes.h    mmreg.h     qedit.h    stdio.h        winsnmp.h
ddeml.h     ipxconst.h    mmsystem.h  rapi.h    stdlib.h       winsock2.h
devguid.h   ipxrtdef.h    mpegtype.h  rasdlg.h    stm.h           winsock.h
devload.h   ipxtfflt.h    mprapi.h    raserror.h    string.h       winspool.h
dhcpcsdk.h  isguids.h    mq.h        ras.h    strings.h      winsvc.h
direct.h    kfuncs.h    msacm.h     rassapi.h    strmif.h       winuser.h
dirent.h    ks.h    msgqueue.h  reason.h    subauth.h      winver.h
dir.h        ksmedia.h    mshtml.h    regstr.h    svcguid.h      ws2spi.h
dlgs.h        largeint.h    mswsock.h   richedit.h    sys/           ws2tcpip.h
docobj.h    libgen.h    nb30.h        richole.h    tchar.h        wsahelp.h
dos.h        limits.h    nddeapi.h   routprot.h    time.h           wsipx.h
dsadmin.h   lmaccess.h    notify.h    rpcdce2.h    tlhelp32.h     wsnetbs.h
dsclient.h  lmalert.h    nspapi.h    rpcdce.h    tmschema.h     wtsapi32.h
dsgetdc.h   lmapibuf.h    ntdef.h     rpcdcep.h    todaycmn.h     wtypes.h
dshow.h     lmat.h    ntdll.h     rpc.h    unistd.h       xprtdefs.h
dsquery.h   lmaudit.h    ntdsapi.h   rpcndr.h    unknwn.h       zmouse.h
dsrole.h    lmbrowsr.h    ntdsbcli.h  rpcnsi.h    userenv.h

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.5.2010, 14:53
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Zueuk @ 11.5.2010, 20:26) *
А верно ли, что прописать -lcomctl32? Посмотрел - такого заголовочного файла нет. И компилятор выдаёт об этом ошибку:
-lcommctrl - это библиотечка commctrl.lib, глянь где она у тебя лежит...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zueuk
  опции профиля:
сообщение 12.5.2010, 19:26
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 10.5.2010
Пользователь №: 1702

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 12.5.2010, 14:53) *
-lcommctrl - это библиотечка commctrl.lib, глянь где она у тебя лежит...

Забавно, из библиотек только SDL.lib в двух местах (копировал вручную, пробовал пример работы с SDL).
Получается, надо брать исходники и компилировать целиком и с библиотеками? А как тогда компилируются простые исходников? Им же не нужны для этого бибилиотеки, а принцип такой же, что и для чуть усложненных исходников? Ведь, в заголовочных файлах описаны прототипы функций, константы и прочее.
Подозреваю, что мои вопросы очень просты для опытных людей. Если подскажете, где прочитать, почитаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Zueuk
  опции профиля:
сообщение 13.5.2010, 11:01
Сообщение #9


Студент
*

Группа: Участник
Сообщений: 21
Регистрация: 10.5.2010
Пользователь №: 1702

Спасибо сказали: 0 раз(а)




Репутация:   0  


В Гугле не забанен, конечно. А краткое наведение на путь очень помогло бы.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SandySandy
  опции профиля:
сообщение 14.5.2010, 3:51
Сообщение #10


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 14.5.2010
Пользователь №: 1714

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Zueuk @ 10.5.2010, 23:03) *
Использую в Linux (Fedora 11) кросс-компилятор mingw32. А конкретнее, версию для arm (arm-mingw32).

это не mingw32ce?
что то я быстрым поиском по google + arm-mingw32 + fedora не нашел ничего
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 17.4.2024, 0:40