我有以下结构:

~/Desktop/hellonode$ ls
build    rs232.h    testnode.js    helloworld.cc    helloworld.node    rs232.c


并在rs232.h中:

int OpenComport(int, int);


但是,当我尝试创建节点本机插件并使用以下代码时:

#include "rs232.h"

using namespace v8;

void init(Handle<Object> target) {
  int cport_nr=0;        /* /dev/ttyS0 (COM1 on windows) */

  if(OpenComport(cport_nr, bdrate))
  {
    printf("Can not open comport\n");
    return;
  }

  target->Set(String::NewSymbol("hello"),
      FunctionTemplate::New(Method)->GetFunction());
}


我使用构建插件
    节点waf

一切编译正常,但是,当我尝试运行它时,出现以下错误:


  ~/Desktop/hellonode$ node testnode
  node: symbol lookup error: <~>/Desktop/hellonode/build/Release/helloworld.node: undefined symbol: OpenComport

最佳答案

这是链接错误,而不是编译器错误。在OpenComport中定义了rs232.c,并且您正在将rs232.c链接到可执行文件中吗?

10-06 15:37