我有以下结构:
~/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
链接到可执行文件中吗?