Тут размещают свои топики новички в С/С++.

Тема в разделе "LANGS.C", создана пользователем nitrotoluol, 4 мар 2007.

  1. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    А почему не так?
    Код (Text):
    1. int *_x;
    2. _x = new int [len];
    Массивы нулевого размера были введены для объявления массивов неизвестной длины, так что если там есть память то можно спокойно обращаться и к такому массиву. Что-то типо:

    Код (Text):
    1. struct s
    2. {
    3.   a[];
    4. };
    5.  
    6. s* _s = (s*)malloc(len);
     
  2. varnie

    varnie New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2005
    Сообщения:
    1.785
    Booster
    спасибо.

    да, вариант с динамическим массивом правилен. я не спорю.
    но мне все же интересно, корректен ли мой вышеприведенный пример? т.е. если все оставить так как есть, то это валидный код??
     
  3. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    varnie
    Да валиден, если есть память к которой обращаешься. Такие вещи как раз удобны для приведения сырой памяти. Например есть некий формат файла с заголовком, а за ним массив с неизвестным кол-во элементов. Загрузили и привели к такой структуре.
     
  4. Ra_Sh

    Ra_Sh New Member

    Публикаций:
    0
    Регистрация:
    23 сен 2008
    Сообщения:
    46
    Не знаю - было, не было. Может кому на пользу.
    Для простых алгоритмических задач использую interpreter, обновился до Ch 6.1
    www.softintegration.com, появился у них и www.mobilec.org, но не смотрел ещё.
     
  5. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Ra_Sh
    thanx for link
     
  6. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    Ребяты, не сочтите за издевательство, но срочно нужен наипростейший проект, написанный на VC++ 2003: в борландовских терминах простая форма (TForm) с кнопкой (TButton) и меткой (TLabel), в которую при нажатии на кнопку выводится "Hello world". Никогда не имел дела с этой средой, тыкался-тыкался в IDE, но сам не смог сделать. Пожалуйста, выручайте!
     
  7. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Relic
    1) File->New->Project->MFC Application-><Entor name>
    2) Application Type->Dialog based
    3) Finish
    4) double-click on button 'OK'
    5) код обработчика:
    Код (Text):
    1.   GetDlgItem(IDC_STATIC)->SetWindowText(_T("hello, relic"));
    2.   //OnOK();
     
  8. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    censored
    Млин, работает! :))) Спасибо! А я тыкался всё в win32, не в mfc......
     
  9. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    В win32 все по-честному: CreateWindow/цикл обработки сообщений/обработчик и тд и тп
     
  10. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    Уважаемый censored, вот еще заморочка какая - создал я свой проект, назвал mfc_test. Все ок, при нажатии на кнопку выводит текст. Теперь попытался в обработчик нажатия кнопки засунуть код из одного небольшого примера на си (из main()), т.е. чтобы по клику на кнопке этот код выполнился. Дополнительные функции и инклюды вписал, пути к либам настроил. При билде проекта получаю "mfc_test fatal error LNK1120: 7 unresolved externals". Даже не знаю, куда копать насчет этих неразрешенных внешних ссылок :dntknw:
    Свой поправленный mfc_test.cpp и сишный сурс cexample1.c в прицепе, посмотрите, плиз.
     
  11. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Наверное надо либы какие-то добавлять в проект или исходники. Cmfc_testDlg.cpp тоже не помешало бы показать.
    > ECW Compression SDK
    отсюда чего-то не хватает?
     
  12. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    censored
    mfc_testDlg.cpp в прицепе.
    Сам проект SDK весит много, сишный пример из него сам по себе компилится без проблем. Все инклюды и либы из SDK прописаны. Могу выложить и их, надо?

    PS Одна из ошибок вот:
    mfc_test error LNK2019: unresolved external symbol _NCSecwShutdown referenced in function "public: void __thiscall Cmfc_testDlg::OnBnClickedOk(void)" (?OnBnClickedOk@Cmfc_testDlg@@QAEXXZ)

    Я не пойму, почему линкер ругается на _NCSecwShutdown, тогда как функция эта без "_"?
     
  13. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Это явно говорит, что не подключена какая-то библиотека. Гугл говорит, что надо подключать что-то из этих библиотек: NCSEcwS.lib,NCSUtilS.lib,NCScnetS.lib,libecwj2S.lib.
    P.S. Что за библиотека не знаю, поэтому не в курсах.
     
  14. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    censored
    Эти библиотеки подключены. А сам сишный код корректно вставлен в обработчик кнопки?
     
  15. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Relic
    Ничего незаконного не вижу. Но надо говорить в контексте этих функций, а я про них ничего не могу сказать :)
     
  16. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    censored
    Линкер ругается на 7 функций (они из 2 библиотек: NCSEcwC.dll и NCSEcw.dll). Сами dll-ки лежат в папке проекта, их либы, в том числе и дебажные, подключены в свойствах проекта. Что же еще надо? :dntknw: И причем тут символ "_" перед названиями обругиваемых функций? Чуется мне тут собака зарыта :)
    В общем, хэлп ми плиз!
     
  17. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    http://en.wikipedia.org/wiki/Name_mangling
    p.s. можно попробовать выложить проект без dll, но с .h/.lib
     
  18. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    В прицепе, ничего что в 7zip - лучше пакует?
    Либы как релизнутые, так и дебажные.
    Важно! Использовать динамическое подключение библиотек, не статическое. Я не разобрался где это можно указать :dntknw:
     
  19. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    Relic
    Как я и говорил, вы не подключили либы.
    mfc_testDlg.cpp:
    Код (Text):
    1. #include "NCSECWCompressClient.h"
    2.  
    3. // пути указаны относительно того, как они лежат в архиве
    4. #ifdef _DEBUG
    5. #pragma comment(lib, "../lib/NCSEcwCd.lib")
    6. #pragma comment(lib, "../lib/NCSEcwd.lib")
    7. #else
    8. #pragma comment(lib, "../lib/NCSEcwC.lib")
    9. #pragma comment(lib, "../lib/NCSEcw.lib")
    10. #endif
    11. ...
    Так пойдет?

    PS btw, что за библиотека?
     
  20. Relic

    Relic Member

    Публикаций:
    0
    Регистрация:
    10 сен 2003
    Сообщения:
    79
    censored
    Заработало! Гениально, спасибо! :)
    Либы я подключал в свойствах проекта Linker->General->Additional Library Directories - этого, оказывается, недостаточно..

    А библиотеки эти из SDK по работе с форматом EСW - www.ermapper.com