[C/C++] odwołanie się do funkcji w C

0

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.

0

extern "C" {
}

0

a nawet tak, jak niżej. żeby jeden nagłówek można było w plikach .c i .cpp include'ować:

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

int usbhidOpenDevice(usbDevice_t **device, int vendorID, char *vendorName, int productID, char *productName, int usesReportIDs);

#ifdef __cplusplus
}
#endif /* __cplusplus */

1 użytkowników online, w tym zalogowanych: 0, gości: 1