#c #linux #g #lib
#c #linux #g #библиотека
Вопрос:
Я пытаюсь скомпилировать C с использованием g в Linux, который использует некоторые функции, определенные в заголовочном файле, созданном кем-то. У меня мало опыта работы с C , поэтому я не уверен, как действовать дальше (или даже если я понимаю, что нужно сделать).
У меня есть все эти файлы в одном каталоге:
PaLaser.cxx
, это основное.USBM3.h
hidapi.h
hidapi.lib
hidapi.dll
USBM3.lib
USBM3.dll
Это было создано кем-то для Windows, и теперь я хочу скомпилировать для Linux. USBM3.h
Выглядит так:
#include <sstream>
#include <string.h>
using namespace std;
class HIDDLL
{
private:
static void init();
static void SendDataToUSB();
static int parseChar(unsigned char );
static void ParseByte(string);
static int openFile(char *);
static void SendFile();
static void readADC();
public:
/* This method is used to generate sequence */
static __attribute__((visibility("default"))) void seqMODE(int mode);
/* This method is used to turn off LASER */
static __attribute__((visibility("default"))) void LASERTurnOff(void);
/* This method is used to send freq data to ARM */
static __attribute__((visibility("default"))) void sendFreq(int freq);
bla bla bla
};
и в PaLaser.cxx
этом есть:
#include "hidapi.h"
#include "USBM3.h"
#pragma comment(lib, "USBM3.lib")
Когда я запускаю
g PaLaser.cxx -o PaLaser
Я получаю
/usr/bin/ld: /tmp/ccUXpAbN.o: in function `main':
PaLaser.cxx:(.text 0x1e): undefined reference to `HIDDLL::isDeviceAttached()'
/usr/bin/ld: PaLaser.cxx:(.text 0x33): undefined reference to `HIDDLL::readLASERstate()'
.............
где ...........
означает все вещи, определенные в USBM3.h
.
Я не уверен, упакованы ли эти вещи в USBM3.lib
файл, но я надеюсь, что это так. Как мне сказать g , чтобы он посмотрел там?
Комментарии:
1. файлы .lib и .dll обычно зависят от Windows и вообще не могут использоваться в Linux.
2. О, я думал, что dll предназначена для Windows, а .lib — для Linux…
3. Нет
.so
, и.a
файлы предназначены для Linux..dll
и.lib
это Windows.4. .lib — это статическая или экспортируемая библиотека, обычно создаваемая и используемая компоновщиком Microsoft Visual C .
5. В принципе, да, вам нужно hidapi.so и USBM3.so или исходный код для их компиляции.