В чем ошибка? (c++)

Тема в разделе "WASM.HEAP", создана пользователем device, 8 фев 2008.

  1. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Код (Text):
    1. const char *Login = (env)->GetStringUTFChars(_login,0);
    2.  
    3. const char *Password = (env)->GetStringUTFChars(_password,0);
    4.  
    5. struct spwd *pass;
    6. pass=getspnam (Login);
    7.  const char *real_passwd = pass->sp_pwdp;
    8. int res;
    9. const char *rcp=crypt(Password,real_passwd);
    10. if ((strcmp(real_passwd,rcp)==0)){
    11. res=1;
    12. }else{
    13. res=0;
    14. }
    15. return res;
    16. }
    Оно компилируется, но не работает...
     
  2. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Это случайно не JNI?
     
  3. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    ОНО. Только разницы-то? Он такой код с обычными чарами не запускает, а JNI и подавно.
     
  4. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    device

    Так а что именно не работает?
     
  5. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Вот что получаю при запуске:
    Код (Text):
    1. /usr/lib/libwebkernel_so.so: /usr/lib/libwebkernel_so.so: undefined symbol: crypt
    Американцы говорят
    "Sounds like a compiler version mismatch.

    Try to compile your library with gcc-2.95 or gcc-3.0"

    Это как?
     
  6. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Линукс... (тошнит пацтол)

    Не, я тут точно не подскажу)))
     
  7. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    что говорит
    Код (Text):
    1. # readelf --all /usr/lib/libwebkernel_so.so | grep "crypt"
    ?
     
  8. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    а может надо просто указать флаг для ld `-lcrypt'? У меня, по-крайней мере, прокатывало ;)
     
  9. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    rei3er
    r90
    Интересно, но я прописал
    Код (Text):
    1. extern char *crypt(char,char);
    и все заработало
     
  10. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Кстати, ведь в crypt.h эти ф-ции прописаны экстерном. Зачем надо еще раз это делать в исходнике?
     
  11. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    не нужно этого делать
    ты точно только extern дописАл?
     
  12. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    Да. Больше ничего не делал.
     
  13. tigsid

    tigsid Member

    Публикаций:
    0
    Регистрация:
    11 июн 2004
    Сообщения:
    62
    Может c++ файл случайно компилируется
    командой gcc file.cpp, а не g++ file.cpp.
     
  14. rei3er

    rei3er maxim

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    917
    Адрес:
    minsk
    device
    компилятор gcc или g++?
     
  15. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    g++:
    Код (Text):
    1. cd '/root/projects/webkernel_so/src' && WANT_AUTOCONF_2_5="1" WANT_AUTOMAKE_1_6="1" gmake -k libwebkernel_so.so
    2. source='NTUnixAuthority.cpp' object='NTUnixAuthority.o' libtool=no depfile='.deps/NTUnixAuthority.Po' tmpdepfile='.deps/NTUnixAuthority.TPo' depmode=gcc3 /bin/sh /root/projects/webkernel_so/admin/depcomp g++ -DHAVE_CONFIG_H -I. -I/root/projects/webkernel_so/src -I.. -I/usr/include/kde -I/usr/lib/qt-3.3/include -I/usr/X11R6/include -DQT_THREAD_SUPPORT -D_REENTRANT -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -c -o NTUnixAuthority.o `test -f 'NTUnixAuthority.cpp' || echo '/root/projects/webkernel_so/src/'`NTUnixAuthority.cpp
    3. NTUnixAuthority.cpp:20:1: warning: "_XOPEN_SOURCE" redefined
    4. <command line>:1:1: warning: this is the location of the previous definition
    5. /bin/sh ../libtool --silent --mode=link g++ -Wnon-virtual-dtor -Wno-long-long -Wundef -Wall -W -Wpointer-arith -Wwrite-strings -ansi -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -Wchar-subscripts -O2 -Wformat-security -Wmissing-format-attribute -fno-exceptions -fno-check-new -fno-common -o libwebkernel_so.so -all-static -avoid-version -module -no-undefined -shared -R /usr/lib -R /usr/lib/qt-3.3/lib -R /usr/X11R6/lib -L/usr/X11R6/lib -L/usr/lib/qt-3.3/lib -L/usr/lib -m32 -fno-rtti -lcrypt main.o webkernel_so.o NTUnixAuthority.o -lc -lkdeui
     
  16. device

    device Reflection

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    1.198
    Адрес:
    RF
    А что такое

    Illegal Frame: 0x72?

    :)
    Опять началось...
     
  17. r90

    r90 New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2005
    Сообщения:
    898
    device
    эээ. точна-точна? может всё-таки:
    Код (Text):
    1. extern char *crypt(char*,char*);
    Не знаю. Но у тебя какая версия gcc стоит? Поставь другую и попробуй ею. В идеале, воткни ту, которая собирала glibc. Или glibc со всей системой вместе пересобери той версией компилятора, которая стоит.

    зы. у меня идей честно говоря нету.