C ++为什么链接器看不到我的文件?

时间:2011-07-03 01:46:45

标签: c++ python node.js linker-errors waf

在Cygwin / Windows下为Node.js构建本机模块:

我有一个带有这个的monkey.cc文件:

#include <monkey/monkey.h>

正在运行

node-waf configure build

我得到以下

'configure' finished successfully (0.351s)
Waf: Entering directory `/usr/src/build'
[2/2] cxx_link: build/default/monkey_1.o -> build/default/monkey.node build/default/libmonkey.dll.a
Creating library file: default/libmonkey.dll.a

然后出现以下错误:

default/monkey_1.o:/usr/src/build/../monkey.cc:144: undefined reference to `_monkeyFoo'

monkeyFoomonkey.h中定义,该monkey位于名为monkey的目录中。我从包含monkey.cc目录和import os srcdir = '.' blddir = './build' VERSION = '0.0.2' def set_options(opt): opt.tool_options('compiler_cxx') def configure(conf): conf.check_tool('compiler_cxx') conf.check_tool('node_addon') def build(bld): monkey = bld.new_task_gen('cxx', 'shlib', 'node_addon') monkey.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall", "-L/usr/lib", "-lssl"] monkey.chmod = 0755 monkey.target = 'monkey' monkey.source = 'monkey.cc' 文件的目录运行上述命令。

修改

wscript,这是node-waf运行的python脚本如下所示:

{{1}}

我错过了什么?

2 个答案:

答案 0 :(得分:3)

这是链接器错误,而不是编译器错误。你有这个功能的定义吗? (不只是一个声明。)你确定它被链接了吗?

答案 1 :(得分:0)

在wscript中添加monkey.lib='crypto'