Witam. Posiadam funkcje usbhidOpenDevice napisaną w C zdefiniowaną w pliku hiddata.c
/* zawartosc hiddata.c */
#include "hiddata.h"
int usbhidOpenDevice(usbDevice_t **device, int vendor, char *vendorName, int product, char *productName, int usesReportIDs)
{
/* zawartosc funkcji*/
}
Funkcja zdeklarowana jest w hiddata.h
/* zawartosc hiddata.h */
int usbhidOpenDevice(usbDevice_t **device, int vendorID, char *vendorName, int productID, char *productName, int usesReportIDs);
Teraz gdy chce się odwołać do funkcji w pliku devicethread.cpp do funkcji usbhidOpenDevice
#include "hiddata.h"
#include "usbconfig.h"
void deviceThread::run()
{
usbDevice_t *dev = NULL;
unsigned char rawVid[2] = {USB_CFG_VENDOR_ID}, rawPid[2] = {USB_CFG_DEVICE_ID};
char vendorName[] = {USB_CFG_VENDOR_NAME, 0}, productName[] = {USB_CFG_DEVICE_NAME, 0};
int vid = rawVid[0] + 256 * rawVid[1];
int pid = rawPid[0] + 256 * rawPid[1];
usbhidOpenDevice(&dev, vid, vendorName, pid, productName, 0);
// dalsza czesc kodu
}
Przy kompilacji pojawia się problem:
devicethread.cpp undefined reference to `usbhidOpenDevice(usbDevice**, int, char*, int, char*, int)'
Dodam, że gdy użyje tej funkcji w C wszystko kompiluje się i działa. Nie wiem dlaczego nie chce to działać w C++. Proszę o pomoc. Pozdrawiam.