书接上篇,利用插件调用DLL简单实例
1,做一个简单的DLL,根据系统位数编译成DLL
// demo_dll.cpp: 定义 DLL 应用程序的导出函数。
//
#include "stdafx.h"
extern "C" _declspec(dllexport) int Add(int x, int y)//申明函数为导出函数
{
int result = x + y;
return result;
}
2,生成的demo_dll.dll拷贝到Electron的跟目录下
3,修改C++插件代码
#include <nan.h>
void Add(const Nan::FunctionCallbackInfo<v8::Value>& info) {
typedef int(*DllAdd)(int, int);
HINSTANCE hDll = LoadLibrary("demo_dll.dll");//加载DLL文件
DllAdd dllAddFunc = (DllAdd)GetProcAddress(hDll, "Add");
int result = 0;
result = dllAddFunc(6, 6);
FreeLibrary(hDll);
info.GetReturnValue().Set(result);
}
void Init(v8::Local<v8::Object> exports) {
exports->Set(Nan::New("add").ToLocalChecked(),
Nan::New<v8::FunctionTemplate>(Add)->GetFunction());
}
NODE_MODULE(demo, Init)
4,编译运行,OK,想要的结果出来了,
Electron通过插件调用DLL的路子通了,下面就可以用JS随意调用C++的系统功能。