2

未解決の extern に問題があります。

問題 -> ヘッダー (myImpressiveHeaderFile.h) ファイルは、シンボルが見つからないことを示しています。しかし、別のファイル (holys_i.c) c ファイルがこのプロジェクトに存在し、このシンボルを保持しています。

新しい win32-console-project (空) を作成し、これらのファイル (およびメイン関数とヘッダー ファイルを含む 3 番目のファイル) を追加すると、完全に機能します。

しかし-> node-gypにプロジェクトをビルドさせた場合(v8.hとnode.hを含むノードspceficファイルであるメインファイルxDを除く同じファイル-ヘッダーファイルも含まれています)-エラーが発生しました(LNK 2001は上記を参照) .

node-gypで作成すると、リンカがcファイルを取得しないか、後で取得するようです? またはnode-gypはcファイルをコンパイルしませんか? それはできませんか?また?

私ができること/テスト/チェックできることはありますか?

編集(例を追加):

最初の例 (作品)! ヘッダー ファイル (1) (extern var のように sth を追加 - 名前は top.h)

EXTERN_C const IID IID_IOPCServer;

C ファイル(var を定義 - 名前は top_i.c)

MIDL_DEFINE_GUID(IID, IID_IOPCServer,0x39c13a4d,0x011e,0x11d0,0x96,0x75,0x00,0x20,0xaf,0xd8,0xad,0xb3);

別のヘッダー ファイル (2) (含まれているヘッダー ファイル 1 - top.h - 関連するものは何もない - 名前は stop.h)

CPP ファイルのヘッダー ファイル (2) (含まれているヘッダー ファイル 2 - 使用された var - 名前 stop.cpp)

hr = CoCreateInstance (clsid, NULL, CLSCTX_LOCAL_SERVER ,IID_IOPCServer, (void**)&m_IOPCServer);

メイン CPP ファイル(ヘッダー ファイル 2 を含む - var は使用しない - 名前は test.cpp) この Fule は stop.cpp の関数を使用します。Ans stop.cpp は extern var を使用しました。

これらのファイルを空の win32 コンソール プロジェクトに追加すると、機能します。大丈夫だ!

しかし、他の例では

(同じ top.h、同じ top_ic.c、同じ stop.h および同じ stop.cpp) node-gyp をビルドします。

バインディングジップ:

{
  "targets": [
    {
      "target_name": "test",

      "sources": [ 


        "src/top.h",
        "src/top_i.c",

        "src/stop.h",
        "src/stop.cpp",

        "src/test.cpp"
      ]
    }
  ]
}

次のようなtest.cpp sthの内部:

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

#include "stop.h"

Handle<Value> Method(const Arguments& args) {
  HandleScope scope;

  return scope.Close(String::New("world"));
}

void init(Handle<Object> target) {
  NODE_SET_METHOD(target, "hello", Method);
}

NODE_MODULE(test, init);

この例は失敗します Oo

stop.obj : error LNK2001: unresolved external symbol "IID_IOPCServer".
[D:\Dev\Workspaces\Nax\Github\node-test\build\test.vcxproj]
stop.obj : error LNK2001: unresolved external symbol "IID_IOPCItemMgt".
[D:\Dev\Workspaces\Nax\Github\node-test\build\test.vcxproj]
stop.obj : error LNK2001: unresolved external symbol "IID_IOPCSyncIO".
[D:\Dev\Workspaces\Nax\Github\node-test\build\test.vcxproj]
D:\Dev\Workspaces\Nax\Github\node-test\build\Release\test.node : fatal error LNK1
120: 3 unresolved externals [D:\Dev\Workspaces\Nax\Github\node-test\build\test.vcxproj]
4

0 に答える 0