nodejs在Windows下c++插件引用libpq.dll

nodejs在Windows下c++插件引用libpq.dll


如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033

环境:

OS : windows 7 64bit

nodejs : 10.153

node-gyp : 6.0.0

编译器 :vs2017

Python : 2.7.15
PostgreSQL: 10.0.10

前言
前面的文章(nodejs在Windows下c++插件编译nodejs在Linux下c++插件运行)介绍了如何在nodejs中编写C++的插件,那么cpp编程中不可避免会引用第三方库。本文以PostgresSQL的libpq.dll为例,介绍C++插件addon中如何使用第三方库。

1. 下载postgresql并安装

在安装目录找到include和lib文件夹,这两个文件夹中有libpq-fe.h头文件和libpq.lib。

在这里插入图片描述

2.编写pg函数调用

hello.cc

#include <node.h>
#include <v8.h>

using namespace v8;

#include "include/libpq-fe.h"

void Method(const v8::FunctionCallbackInfo<Value> &args)
{
    Isolate *isolate = Isolate::GetCurrent();
    HandleScope scope(isolate);
    args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));
}

void Init(Handle<Object> exports)
{
    Isolate *isolate = Isolate::GetCurrent();
    PGconn *conn;
    conn = PQconnectdb("postgresql://postgres:123456@localhost/history");
    if (PQstatus(conn) == CONNECTION_OK)
        printf("Connection succeeded.\n");
    else
    {
        printf("Connection failed.\n");
    }

    exports->Set(String::NewFromUtf8(isolate, "hello"),
                 FunctionTemplate::New(isolate, Method)->GetFunction());
}

NODE_MODULE(hello, Init)

3.编写binding.gyp

{
    "targets": [
        {
            "target_name": "hello",
            "sources": ["hello.cc"],
            'include_dirs': [
                "/include"
            ],
            'libraries': [
                "/lib/libpq.lib"
            ]
        }
    ]
}

4.编译.node

node-gyp configure
node-gyp build

5.下载PostgreSQL ODBC driver

https://www.postgresql.org/ftp/odbc/versions/mm/
https://ftp.postgresql.org/pub/odbc/versions/mm/psqlodbc_10_03_0000-x64.zip
安装后将所有dll放到.ndoe目录下。

或者将postgresql安装自带的libpq.dll及依赖放到.ndoe目录下。

6.编写hello.js

hello.js

//hello.js

var addon = require('./build/Release/hello.node');

console.log(addon.hello()); // 'world'

运行hello.js

通过hello.js调用hello.node,hello.node调用libpq.dll。

7.结果


觉得文章对你有帮助,可以扫描二维码捐赠给博主,谢谢!
在这里插入图片描述
如需转载请标明出处:http://blog.csdn.net/itas109
QQ技术交流群:129518033


License

License under CC BY-NC-ND 4.0: 署名-非商业使用-禁止演绎


Reference:
1.http://nodejs.cn/api/addons.html
2.https://www.jianshu.com/p/8a9f4304557c
3.https://www.npmjs.com/package/node-gyp
4.https://github.com/felixrieseberg/windows-build-tools
5.https://www.postgresql.org/ftp/odbc/versions/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itas109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值