C ++ Node.js - 获取错误LNK2001

时间:2013-09-30 08:37:26

标签: c++ node.js lnk2001

有一个未解决的外部问题。

问题 - >标题(myImpressiveHeaderFile.h)文件告诉他找不到符号。但是另一个文件(holys_i.c)在这个项目中存在一个c文件并保存了这个符号。

如果我创建一个新的win32-console-project(空)并添加这些文件(以及第三个文件,带有main函数并包含头文件),它可以很好地工作。

但是 - >如果我让node-gyp构建项目(除主文件xD之外的相同文件,即v8.h和node.h的节点spcefic文件 - 但也包括头文件) - 我收到错误(LNK 2001见上文)。

如果我使用node-gyp创建它,链接器似乎不会或稍后使用c-file?或者node-gyp不能编译c文件?那不是吗?或?

您对我能做什么/测试/检查有什么想法吗?

编辑(添加示例):

第一个例子(有效)! 头文件(1)(添加类似extern变量名称top.h)

EXTERN_C const IID IID_IOPCServer;

C-File (定义了var-name 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 - name test.cpp) 这个Fule使用stop.cpp的函数。 Ans stop.cpp使用了extern var。

当我将这些文件添加到空的win32控制台项目时 - 它可以工作。一切都很精细!

在其他示例中

(相同的top.h,相同的top_i.c,相同的stop.h和相同的stop.cpp) 我让node-gyp构建。

绑定Gyp:

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

      "sources": [ 


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

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

        "src/test.cpp"
      ]
    }
  ]
}

在test.cpp里面,像这样:

#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);

示例失败了

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]

0 个答案:

没有答案