未解決の 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]