Я пишу приложение Data Aquisition, но вместо традиционного скучного интерфейса мне было поручено добавить интерфейс Web 2.0, я услышал, что Node.js хорош для вызова кода C ++, но с тех пор как этап, на котором я должен был подумать о связывании моей DLL с моим веб-интерфейсом, я попал в кирпичную стену.
Я знаю, что мог бы написать код изначально без использования надстройки, такой как node-ffi, но, честно говоря, синтаксис для выполнения этих привязок с помощью синтаксиса Google V8 казался довольно сложным, поэтому я предполагаю, что ffi — самый простой способ справиться с этим.
Я знаю, что предварительно вопрос был задан ранее и имеет ответ Вот но я все еще немного неуверен в том, как написать шим, чтобы позволить мне вызывать мою C ++ dll с узла.
У меня есть следующий заголовок C ++:
#include "NIDAQmx.h"#include <string>
using std::string;
namespace DAQReaderDll
{
class DAQReader
{
private:
int32 m_read;
int32 m_error;
TaskHandle m_handle;
bool m_isRunning;
char m_errBuff[2048];
public:
__declspec(dllexport) DAQReader();
__declspec(dllexport) ~DAQReader();
__declspec(dllexport) void startDevice();
__declspec(dllexport) void stopDevice();
__declspec(dllexport) float32 getSample();
__declspec(dllexport) bool isRunning();
__declspec(dllexport) string getError();
};
// Used inside the DLL
int SAMPLE_SIZE = 1000;
int READ_SPEED = 1000;
int AS_PSI = 2980;
}
Я предполагаю, что мне не нужно предоставлять детали реализации моего файла .cpp, но я хочу знать, как я могу сделать эти методы видимыми для node.js и как я могу обернуть их в node-ffi?
Я также обеспокоен тем, что у меня могут быть проблемы с подключением этого dll к внешнему интерфейсу, так как мой .dll имеет зависимость от NIDAQmx .dll, это вызовет проблемы дальше по конвейеру?
Задача ещё не решена.