質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

1回答

12316閲覧

javascriptからdllファイルの読み込み方法について

退会済みユーザー

退会済みユーザー

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2016/03/05 07:31

私は現在html, javascript, cssを使ってelectron上で動作するアプリケーションを作成しています。
今回、このアプリケーションでC/C++で書かれたライブラリを使用することになったのですが、javascriptからライブラリ内に入っているdllファイルの参照がうまく実現できておりません。

調べてみたところ、node-gypでdllファイルをビルドして、生成されたnodeファイルをrequireで読み込むという方法があったため試して見たのですが、requireする際に「Module did not self-register」と表示されて、うまく読み込みできませんでした。(複数回rebuildしましたが変わらず)
node.jsのバージョンに問題があるかと思い、複数のバージョンで試しましたが、同じエラーが出ました。
また、そもそもこの方法を調べたサイトではccファイルに対してビルドを行って生成されたnodeファイルをrequireで読み込むという方法でしたので、dllファイルに対して同様のことができるかも分かっておりません。

そこで何点か質問があります。
1.node-gypからビルドしたdllファイルを参照する方法はありますでしょうか?
2.その他の方法でjavascriptからdllファイルを参照する方法はありますでしょうか?
3.私はC/C++の言語の知識が乏しくあまりよく理解できておりません。今回利用しようとしているライブラリの中にはhファイル、dllファイル、libファイルが入っていました。hファイルが元のC/C++で書かれたソースで、それをまとめて一つにしたものがdllファイル、libファイルという認識なのですが、そもそもjavascriptから参照する場合はどのファイルを用いるのが正しいのでしょうか?

以上3点、お分かりの方がおりましたら、ご教授願います。

動作環境
・windows7
・node.js(nodeistを導入しています)
0.10.42
0.12.11
5.6.0
・npm
3.5.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

  1. 記憶が間違ってなければ、node-gypはソースコードからビルドするために使われるツールです。
  2. node-ffiを使用してください。
  3. hはC/C++からDLLの関数を呼び出すために用いられ、libはリンカで用いられます。

実際にコンパイル後のコードが入ってるのがdllです。

投稿2016/03/05 09:02

liply

総合スコア150

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/03/05 09:09

ご回答ありがとうございます。 dllファイルを参照することは合っていましたが、node-gypを用いることは間違ってた、ということですね。 node-ffiは一度試してみたのですが、「npm install ffi」を行った後に「reruire('ffi')」をしようとすると、質問内容にも記載している「Module did not self-register」のエラーが発生しました。 こちらのエラーについては何かご存じではないでしょうか?
退会済みユーザー

退会済みユーザー

2016/03/07 14:30

node.jsのv0.10.42でffiをrequireしようとすると「Module did not self-register」のエラーが発生。 v0.12.11とv5.6.0でrequireしようとすると「Could not locate the bindings file」のエラーが発生。 どちらもelectron-rebuildをインストールしてリビルドしようとすると「spawn ENOENT」のエラーでリビルドできず。 ChildProcessのエラーメッセージがあったので、端末の再起動やnpm cache cleanも試しましたが、エラーがでてリビルドできませんでした。 ffiがうまく通らないので、現在electron-edgeでdllを参照できないか確認中です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問