Перейти к содержанию
    

harmaa

Новичок
  • Постов

    3
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Есть проект L -- static library, и зависящий от него проект A -- приложение. Мне надо сделать так, чтобы при сборке A автоматически собирался L, и затем A линковался с L. Стоит VisualDSP++ 5.0 Update 10, последняя версия. Я нашел, как настроить зависимости между проектами (меню Project -> Project Dependencies), но это влияет только на очередность сборки, проект A не линкуется, поскольку студия не пытается искать собранную библиотеку L. Я вручную добавил файл DLB от проекта L в проект A -- теперь линкуется, но если сделать Clean, DLB-файл удаляется с диска, VisualDSP после перезапуска не может его найти и надоедает разными бестолковыми сообщениями. В настройках проекта Link - General есть поле ввода Search directories, я так понял, для путей поиска библиотек, но неясно, как оно используется, если единственный способ (известный мне) подсунуть проекту библиотеку -- добавить ее файл в список файлов проекта. Нельзя ли сделать, как в MSVC, прописав имена библиотек куда-нибудь в настройки?
  2. dxp, andrewlekar Спасибо за ответы, пока вам отвечал, кучу материалов перерыл :). На время модификации у меня прерывания блокируются. Я почитал доку к компилятору (компилятор для TI C6000) и выяснил, что блокировка прерываний выключает оптимизацию и может использоваться для создания критических секций. Поллинг тоже собираюсь использовать для части операций.
  3. Здравствуйте. Имеется список std::list<> typedef std::list<TTransfer> TTransferQueue; volatile TTransferQueue mTransfers; , в который могут добавляться и удаляться элементы из основного кода, и обработчик прерывания, который только читает элементы. Обычно таким переменным я ставлю volatile, но в этом случае компилятор ругается: error #1163: no instance of overloaded function "std::list<_Ty, _Ax>::end [with _Ty=TI2CController::TTransfer, _Ax=std::allocator<TI2CController::TTransfer>]" matches the argument list and object (the object has cv-qualifiers that prevent a match) object type is: volatile TI2CController::TTransferQueue : mNo(no), mBaseAddr(baseAddr), mTransfers(), mActiveTransfer(mTransfers.end()), ^ Если убрать volatile, то код компилируется. Подскажите пожалуйста, какие нужно предпринять дополнительные действия для "правильного" доступа к списку и из основного кода, и из прерывания. Я плохо представляю, когда нужен volatile, и ставлю его во всех сомнительных случаях. Буду благодарен, если подкинете литературу по теме.
×
×
  • Создать...