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

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


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

文章目录

  • nodejs在Windows下c++插件引用libpq.dll
    • @[toc]
    • 1. 下载postgresql并安装
    • 2.编写pg函数调用
    • 3.编写binding.gyp
    • 4.编译.node
    • 5.下载PostgreSQL ODBC driver
    • 6.编写hello.js
    • 7.结果

环境:

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。

nodejs在Windows下c++插件引用libpq.dll_第1张图片

2.编写pg函数调用

hello.cc

#include 
#include 

using namespace v8;

#include "include/libpq-fe.h"

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

void Init(Handle 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

nodejs在Windows下c++插件引用libpq.dll_第2张图片

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/

你可能感兴趣的:(NodeJS)